@ECHO OFF
setlocal enableDelayedExpansion
SET workingPath=c:\temp\
SET filesToRename=list-*
SET stringToSearch=март
SET stringToReplace=апрель
cd %workingPath%
ECHO working path set to %workingPath%
FOR /f "delims=^T" %%f IN ('dir /B %filesToRename%') DO (
call :myFunc "%%f"
)
GOTO End
:myFunc
SET oldFileName=%1
SET newFileName=!oldFileName:%stringToSearch%=%stringToReplace%!
ren %oldFileName% %newFileName%
ECHO %oldFileName% renamed to %newFileName%
GOTO End
:End
В процессе работы выяснилось много удивительных вещей. Например, что внутри цикла FOR почему-то не срабатывает присвоение SET. Или что команды set и dir обладают массой интересных ключей (в частности, первая при помощи ключа /A умеет вычислять арифметические выражения, а вторая при указании /B возвращает чистые имена файлов без путей). Или что переход по метке может принимать параметр.
В общем, есть, над чем подумать.
Комментариев нет:
Отправить комментарий