Массовое переименование файлов расширений рекурсивно (пакет Windows)

У меня есть множество файлов в очень сложной структуре каталогов, и по причинам, которые не стоит обсуждать, мне нужно переименовать все файлы с расширением ".inp", чтобы иметь расширения ".TXT". Есть много других файлов с другими расширениями, которые я не хочу трогать, и я хочу сделать это рекурсивно вниз как минимум на 5 уровней.

До сих пор я:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd

... но это только снижается на один уровень каталогов.

Может ли кто-нибудь помочь? Спасибо заранее!

Ответ 1

for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"

должен работать на вас. Замените startdir на свое начальное имя каталога, и когда вы проверили это, это будет с удовлетворением, удалите echo перед ren, чтобы на самом деле переименовать.


Для downvoters: выполнение командного файла отличается от исключения из командной строки тем, что каждый %%x, где x - метапеременная (переменная управления контуром), должна быть уменьшена до %, поэтому

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"

должен работать, если вы выполните это из приглашения. Пожалуйста, прочитайте примечание о echo.

Ответ 2

В Windows 7 для меня работает следующая однострочная команда, чтобы переименовать все файлы, рекурсивно, в *.js в *.txt:

FOR /R %x IN (*.js) DO ren "%x" *.txt