Назад | Перейти на главную страницу

Он не печатает увеличенное значение переменной в цикле for командного файла.

Как видите, я новичок в пакетных файлах, я написал сценарий в среде Windows 2003 для печати увеличенного значения счетчика переменных, а также применил условие if, которое не работает в цикле for, хотя и за пределами поскольку он показывает правильное количество значений переменной.

@echo off
SetLocal EnableDelayedExpansion
cls
set /A counter = 1
for C:\Scripts\LogFiles\  %%a in (*.txt) do ( echo %counter%
set /A counter += 1
echo %%a
if %counter% ==2 (echo test)
)

Отложенное расширение требует использования ! вместо того % для раскрытия переменных. Так и должно быть !counter!.

Все переменные среды формы %counter% расширяются во время разбор команды (для for с блоком он включает весь блок), поэтому вы увидите только значение, которое было у переменной перед цикл, так как к моменту выполнения цикла переменных больше нет; только ценности.