Переименовать все файлы в папке в верхний регистр с помощью пакета
Есть ли способ переименовать все файлы в определенной папке в верхний регистр с пакетным файлом?
Я нашел этот код. Но он переименовывает файлы в нижний регистр. Как изменить его, чтобы переименовать в верхний регистр?
for /f "Tokens=*" %f in ('dir /l/b/a-d') do (rename "%f" "%f")
2 ответа
Решение
@echo off
setlocal enableDelayedExpansion
pushd c:\some_dir
for %%f in (*) do (
set "filename=%%~f"
for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set "filename=!filename:%%A=%%A!"
)
ren "%%f" "!filename!" >nul 2>&1
)
endlocal
Это также поместит расширение в верхний регистр.... Что для меня было проблемой... Так вот как я "сохранил" расширение как строчный...
accepted
@echo off
setlocal enableDelayedExpansion
pushd C:\WIS\Connect_Phoenix\CONNECT_FILES_FOR_UPLOAD\17Q4_PDFs
for %%f in (*) do (
set "filename=%%~f"
for %%A in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
set "filename=!filename:%%A=%%A!"
)
ren "%%f" "!filename!" >nul 2>&1
)
for /r "C:\WIS\Connect_Phoenix\CONNECT_FILES_FOR_UPLOAD\17Q4_PDFs\" %%G in (*.PDF) do ren "%%~G" *.pdf
endlocal
Это преобразует все имена файлов в каталоге в верхний регистр, не затрагивая расширение.
rename 's/^([^.]*)\.(.*)$/\U$1\E.$2/' *