Переименование файлов в папке с использованием командного файла

Я пытаюсь переименовать файлы с определенным форматом в определенной папке. Я делал это, создавая текстовый файл с именами файлов и ссылаясь на этот текстовый файл в зацикленном операторе. Когда я запускаю команды построчно в cmd, он работает нормально, однако, когда я пытаюсь запустить как командный файл, он не работает. Пакетный файл сохраняется в папке, в которой я хочу выполнить операцию, поэтому я предполагаю, что мне не нужно объявлять каталог. Любая помощь приветствуется!

dir > file.txt
for /f "tokens=1,2,3,4 delims=_." %i in (file.txt) do ren "%i_%j_%k.%l" "%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s_%k.%l"

:END

1 ответ

Решение

При написании циклов for в сценариях cmd переменные for (например,%i) необходимо экранировать с помощью дополнительного%, чтобы он стал:

for /f "tokens=1,2,3,4 delims=_." %%i in (file.txt) do ren "%%i_%%j_%%k.%%l" "%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s_%%k.%%l"

Чтобы узнать больше, как для работ типа for /? в cmd.

Интересная часть:

Чтобы использовать команду FOR в пакетной программе, укажите %% переменную вместо%variable. Имена переменных чувствительны к регистру, поэтому% i отличается от%I.

Другие вопросы по тегам