setlocal enabledelayedexpansion что это



Автор Џрослав Куликовский задал вопрос в разделе Другие языки и технологии

Командные файлы и получил лучший ответ

Ответ от Svb[гуру]
2)Setlocal EnableDelayedExpansion
- Необходимо для того, чтобы была действительной конструкция! button.%errorlevel%!, которая в свою очередь необходима из-за вложенности одной переменной в другую.
3) find "Button" <"%~f0" | more +1
-Ищет все вхождения строки Button в самом командном файле .
%~f0 - переменная %0, содержащая путь к исполняемому командному файлу, расширяется до полного имени. Символ < означает ввод из файла.
| more +1 - вывод команды передается на вход команды more, которая нужна для того, чтобы пропустить вывод первого вхождения Button, т. е. самой строки с самой командной find (параметр +1). Таким образом будут выведены только строки Set Button....
10) timeout /t! button.%errorlevel%! /nobreak
- запуск (внешней) программы timeout с ключами.
!button.%errorlevel%! - вначале раскрывается вложенная переменная errorlevel, значение которой соответствует результату выполнения choice (введенной цифре). Затем раскрывается все выражение полностью. Например если была введена цифра 4, то будет раскрыта переменная Button.4 (в строку 30). Очевидно, что данное значение используется как указание на количество секунд (параметр /t). Параметр /nobreak, как нетрудно догадаться, означает запрет на прерывание выполнения команды пользователем.

Ответ от Mahito[гуру]
вторая, отключить локальное устройство. Остальные не знаю

Ответ от Александр Сизенко[гуру]
вот в чем хватило сил разобраться
setlocal enabledelayedexpansion
В обычном случае, чтобы узнать значение переменной окружения, надо воспользоваться конструкцией %переменная%. Однако, если значение переменной меняется внутри цикла и читается там же, то для корректной работы батника, нужно использовать команду setlocal enabledelayedexpansion и вместо символа "%", использовать символ "!". Иначе, значение переменной в цикле будет всегда одним и тем же - таким, каким было до входа в цикл.
find "Button" <"%~f0" | more +1
+n : Start displaying the first file at line n
more выведет на экран со строки 1 результаты команды
find "Button" <"%~f0"
%0 is replaced by the batch file name
%~f0
Expands %0 to a fully qualified path name.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Командные файлы
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*