Найти и переименовать файлы без расширения?
Итак, у меня есть куча файлов без расширения. Я хочу написать пакет Windows script, который будет:
- Найти файлы без расширения (в указанной папке)
- Добавить .bla в конец имени файла
Я такой пакет windows script noob Я даже не знаю с чего начать. Предложения?
Ответы
Ответ 1
Для пакетных файлов Windows это приведет к переименованию только файлов без расширения расширения .bla:
rename *. *.bla
Обратите внимание, что первым аргументом является звезда и точка: *.
Второй аргумент: *.bla
Комбинация start dot (*.) представляет файлы без расширений в этом контексте.
До:
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"
)
EDIT2:
Для рекурсивного переименования файлов без расширения в подкаталогах (поддерживает пробелы в пути):
@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
Ответ 2
Вот еще одна возможная команда для переименования файлов без рекурсивных расширений (предполагая, что пути к файлам не содержат пробелов):
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"
Ответ 3
чтобы сделать это в подкаталогах, используйте это:
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"