![]() |
ВВести имя файла в переменную.
Хочу ввести имя .asm файла находящегося в одной папке с батником в переменную.
PHP код:
|
Цитата:
Код:
@echo off |
Спасибо!!!
|
Можете ли обьяснить, как этот код работает? Как- бы целые фразы
setlocal enableextensions enabledelayedexpansion do if not defined sFirstAsmFile set sFirstAsmFile=%%~nxi Неужели это действующие части кода? |
Цитата:
Код:
setlocal /? Цитата:
Код:
for /f "usebackq delims=" %%i in ( Суть такова: получив stdout команды «dir», разобрать его построчно. Для каждой строки проверяется условие — не определена ли переменная окружения «sFirstAsmFile»? На первом проходе разбора она ещё не определена, поэтому будет исполнена конструкция «set sFirstAsmFile=%%~nxi», которая присвоит переменной окружения «sFirstAsmFile» содержимое первой строки из stdout команды «dir». На втором и последующем проходах разбора условие не будет истинным, поскольку переменная окружения «sFirstAsmFile» была определена на первом проходе разбора («set sFirstAsmFile=…»), посему команда присвоения на этих проходах больше не исполнится. В результате мы получим на выходе «for /f …» содержимое первой строки из stdout команды «dir». Для чистоты также можно на всякий случай очищать переменную окружения «sFirstAsmFile» перед циклом разбора «for /f»: Код:
set sFirstAsmFile= А что будет, если в каталоге не окажется вовсе ни одного файла «*.asm»? В данном примере сие решается следующим образом — stderr команды «dir» перенаправляется в пустое устройство, а stdout окажется в данном случае пуст. Поэтому переменная окружения «sFirstAsmFile» попросту окажется не определена. И нам остаётся только проверить этот факт аналогичным условием «if defined sFirstAsmFile …». |
СПАСИБО!!!!
|
Спасибо огромное!! Действительно, понятно!! :) :up
|
Время: 00:47. |
Время: 00:47.
© OSzone.net 2001-