Переименовать все файлы в нижний регистр, заменить пробелы - PullRequest
1 голос
/ 03 сентября 2010

Как в командной строке Windows переименовать все файлы в нижний регистр и удалить все пробелы?

Ответы [ 3 ]

3 голосов
/ 03 сентября 2010

Сделать командный файл

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ( ' dir /b /a-d *.* ') do (
set name="%%i"
set newname=!name: =!
rename "%%i" !newname!
)

ПРИМЕЧАНИЕ. Запустите тестовый каталог и посмотрите, есть ли у вас ожидаемый результат. Я не проверял это.

РЕДАКТИРОВАТЬ: Забыл сказать, что это только удалит пробелы.

1 голос
/ 06 февраля 2011

Я использовал этот пакетный файл, чтобы переименовать все папки и подпапки в строчные имена:

@ECHO OFF
CALL:GETDIRS

:GETDIRS
FOR /F "delims=" %%s IN ('DIR /B /L /AD') DO (
    RENAME "%%s" "%%s"
    CD "%%s"
    CALL:GETDIRS
    CD ..
)
GOTO:EOF
0 голосов
/ 01 октября 2018

Чтобы сделать трюк с "строчными буквами" и "удалить пробелы" ...

В данном решении, в выражении 'dir', используйте также "/ l"

Оператор / L в dir заставляет приводить строчные буквы к именам файлов в результате.

В качестве команды "Windows-RENAME", если вы используете "то же самое" имя файла, она заметит преобразование из заглавных букв внижний регистр.

ren XPTO.TXT xpto.txt

Результат всегда будет следующим: XPTO.TXT

Чтобы «обойти» это, мы используем эфемерную технику: перейти от старого к временному, затем -> переместить временный к новому

Тогда решение будет:

@echo off
if exist temporaryfilenametorename del temporaryfilenametorename /f/q
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir *.csv /l /b /a-d') do (
set name="%%i"
set newname=!name: =!
rename "%%i" temporaryfilenametorename
rename temporaryfilenametorename !newname!
)
...