четверг, 15 июля 2010 г.

Немного про Batch

Не перестаю удивляться синтаксису BAT-файлов.

Вот так не работает
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (echo Cannot switch on extensions)
ELSE (echo Extensions are switched on)

- не знает cmd.exe команды ELSE.

А надо вот так:
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 (echo Cannot switch on extensions
)ELSE (echo Extensions are switched on)

так как ПРЕДЛОЖЕНИЕ (такой элемент языка) ELSE должно быть на той же строчке, что и команда, следующая за оператором IF.

Теперь про setlocal. Эта директива включает некоторую опцию только для данного bat-файла.
Далее цитата из хелпа:
"Команда SETLOCAL принимает необязательные аргументы: ENABLEEXTENSIONS или
DISABLEEXTENSIONS. Это позволяет включить или отключить расширенную обработку
команд до выполнения команды. Аргумент ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION включает или отключает отложенное расширение переменной среды."

Пригодиться это все может, если нужно распечатывать значения счетчика цикла во время итераций (даже это в BAT-никах без удара в бубен не сделаешь).
отложенное расширение переменной среды.

Комментариев нет: