SETLOCAL ENABLEDELAYEDEXPANSION
set i=1
for /f "tokens=*" %%f in ('dir /b') do (
ren %%f renamed!i!.ren
set /a i+=1)
В пределах оператора блока (a parenthesised series of statements)
, блок вся анализируется и затем выполняется. Любой %var%
в блоке будет заменен значением этой переменной на момент анализа блока - до того, как блок будет выполнен - то же самое относится к FOR ... DO (block)
.
Следовательно, IF (something) else (somethingelse)
будет выполнен с использованием значений %variables%
в момент возникновения ошибки IF
.
Два распространенный способ преодоления этого является: 1) использовать setlocal enabledelayedexpansion
и использовать !var!
вместо %var%
, чтобы получить доступ к измененному значению var
или 2) для вызова подпрограммы, чтобы выполнить дальнейшую обработку с использованием измененных значений.
Внутри командного файла ссылки на переменную цикла связи требуют удвоения числа %
.
Вы действительно хотите изменить расширение файлов? ! Это похоже на плохую идею. – dbenham