#batch-file #pdf #cmd
#пакетный файл #PDF #cmd
Вопрос:
Мне нужен пакетный файл для поиска фразы «Ch_XX» и добавления с ним «Ch_XX_Pg» в PDF-файлы.
Имя файла моих PDF-файлов выглядит следующим образом…
01_Vig12345_ch01_001-020.pdf
02_Vig12345_ch02_021-046.pdf
03_Vig12345_ch03_047-078.pdf
Для этих файлов выходные данные должны быть…
01_Vig12345_ch01_pg001-020.pdf
02_Vig12345_ch02_pg021-046.pdf
03_Vig12345_ch03_pg047-078.pdf
Если имя файла не содержит «CH», это «pg» не должно добавляться.
Ответ №1:
@echo off
setlocal disableDelayedExpansion
for %%F in (*_ch??_???-???.pdf) do (
set "name=%%F"
setlocal enableDelayedExpansion
ren "!name!" "!name:~0,-11!pg!name:~-11!"
endlocal
)
Отложенное расширение включается и выключается в цикле, чтобы защитить все !
, что может быть в имени файла (маловероятно, но возможно).
Переименованный файл не может соответствовать маске файла в цикле FOR, поэтому нет риска переименования файла дважды.
Но если задан сценарий, в котором новое имя может соответствовать маске для файла, то один запуск может переименовать файл дважды. В таком случае цикл FOR должен быть изменен на FOR /F, обрабатывающий команду DIR /B.