Найти и переименовать файлы без расширения?
-
06-07-2019 - |
Вопрос
Итак, у меня есть куча файлов без расширения.Я хочу написать пакетный сценарий Windows, который будет:
- Найти файлы без расширения (в указанной папке)
- Добавьте .bla в конец имени файла.
Я такой нуб в области пакетных сценариев Windows, что даже не знаю, с чего начать.Предложения?
Решение
Для пакетных файлов Windows это приведет к переименованию только файлов без расширения .bla:
rename *. *.bla
Обратите внимание, что первый аргумент — это звездочка и точка:*.
Второй аргумент:*.bla
Комбинация начальной точки (*.) в этом контексте представляет файлы без расширений.
До:
06/21/2009 11:57 PM 6 test
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2
После:
06/21/2009 11:57 PM 6 test.bla
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2.bla
Дополнительное примечание:Противоположная командная строка переименовывает все файлы .bla в файлы без расширений.
РЕДАКТИРОВАТЬ:
Для рекурсивного переименования файлов без расширения в подкаталогах (пробелы в путях не поддерживаются):
@echo off
FOR /F %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
РЕДАКТИРОВАТЬ2:
Для рекурсивного переименования файлов без расширения в подкаталогах (поддерживает пробелы в пути):
@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
Другие советы
Вот еще одна возможная команда для рекурсивного переименования файлов без расширений (при условии, что пути к файлам не содержат пробелов):
for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Пакетная версия (с удвоенным %
):
@echo off
for /f %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Если имена файлов или папок содержат пробелы, используйте вместо этого эту команду:
for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Пакетная версия:
@echo off
for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Редактировать: вот еще более короткая однострочная строка, поддерживающая пробелы в путях:
for /r %i in (*.) do ren "%~fi" "%~ni.bla"
Пакетная версия:
@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
чтобы сделать это в подкаталогах, используйте это:
for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
если вы используете это в пакетном файле, вам нужно удвоить «%»
for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
редактировать:
и если в именах каталогов есть пробелы, вы можете попробовать это (пакетная версия):
for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"