Пакетный файл, чтобы найти файл с помощью регулярного выражения и переименовать его
@echo
cd\
cd C:\Test\pdf
for /f "delims=" %%i in ('dir /b | findstr /E /R "\\BW RRI - [0-9]\.[0-9]\PAYMENT CONFIRMATION.pdf$"') do set "Filename=%%i" ren ("%FileName%" "test.pdf")
EXIT
Поэтому я пытаюсь запустить выше пакета, чтобы найти файл и переименовать его. В имени файла есть пробел. Когда я запускаю только следующую команду в командной строке, он находит нужный файл
dir /b | findstr /E /R "\\BW RRI - [0-9]\.[0-9]\PAYMENT CONFIRMATION.pdf$"
Но когда я использую цикл для переименования, он не работает. Что я делаю неправильно?
1 ответ
3 ошибки.
Во-первых, весь for /f...
линия будет разобрана и любая %var%
заменяется его текущим значением, поэтому ren
пункт станет ren ("" "test.pdf")
Во-вторых, скобки будут включены в параметры ren
и должен быть удален
В-третьих set
пункт и ren
должен быть отделен &
каскадировать инструкции.
.... do ren "%%i" "test.pdf"
должен решить проблему. Там нет необходимости устанавливать filename
,