1 (изменено: Егорыч, 2010-12-12 19:28:26)

Тема: CMD/BAT: Не работает счётчик

@echo off
Set N=0
for /r .\Dir\ %%i in (*.txt) do (
set /a N = N + 1
echo %N%:%%~ni
)

Не работает счётчик "set /a N = N + 1" не работает почему что я не так делаю?

2

Re: CMD/BAT: Не работает счётчик

Вы не правы. Работает:

@echo off
Set /a N = 0
for /r .\Dir\ %%i in (*.txt) do (
set /a N = N + 1
echo %N%:%%~ni
)
echo %N%

Дело в том, что внутри скобок раскрытие переменных происходит в момент входа в них (то бишь, однократно при входе). Отсюда и будет «0:…», «0:…» …

Вам нужно использовать отложенное раскрытие переменных, например, так:

@echo off
setlocal enableextensions enabledelayedexpansion

set /a n = 0

for /r ".\Dir\" %%i in (*.txt) do (
    set /a n = n + 1
    echo !n!:%%~ni
)

endlocal
exit /b 0

Либо вызывать как процедуру:

@echo off
setlocal

set /a n = 0

for /r ".\Dir\" %%i in (*.txt) do (
    set /a n = n + 1
    call echo %%n%%:%%~ni
)

endlocal
exit /b 0