Массовое переименование файлов расширений рекурсивно (пакет 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