Пакетный счетчик не работает

У меня есть этот код в пакетном файле:

setlocal EnableDelayedExpansion
set var=0
for /f "tokens=*" %%a in (kim.txt) do (
    set /a var+=1
    echo Line %var%
)   

Но %var%, похоже, не увеличивается, он всегда равен нулю. Пробовал разные подходы без везения.


person Cornezuelo del Centeno    schedule 23.12.2014    source источник


Ответы (1)


При отложенном расширении вам необходимо получить доступ к вашим переменным (в случае изменения их значения в контексте скобок) с помощью ! вместо % :

setlocal EnableDelayedExpansion
set var=0
for /f "tokens=*" %%a in (kim.txt) do (
    set /a var+=1
    echo Line !var!
)
person npocmaka    schedule 23.12.2014
comment
Да, переменные % раскрываются при чтении команды. Команда в данном случае представляет собой весь четырехстрочный оператор for. ! vars — это то, как вы получаете отложенное расширение, потому что они расширяются, когда интерпретируются строки. - person paxdiablo; 23.12.2014