Пакетный файл, чтобы найти файл с помощью регулярного выражения и переименовать его

@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,

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