/ / batch-file para converter nomes de arquivos em minúsculas - arquivo em lote

arquivo em lote para converter nomes de arquivos em minúsculas - arquivo em lote

Eu preciso de um arquivo em lotes para converter todos os arquivos em uma pasta e suas subpastas para minúsculas. Por exemplo:

Here Is StackOverflow.txt

para

here is stackoverflow.txt

Uma parte do nome do arquivo está no colchete. É possível negligenciá-lo e deixá-lo em seu estado anterior? por exemplo.

Here Is [A WEBSITE CALLED] StackOverflow.txt

para

here is [A WEBSITE CALLED] stackoverflow.txt

Respostas:

4 para resposta № 1

Facilmente feito com JREN.BAT - um script JScript / batch híbrido que renomeia arquivos por meio da substituição de expressão regular. O JREN.BAT é um script puro que é executado nativamente em qualquer máquina Windows do XP em diante.

Para converter simplesmente todos os nomes de arquivos em minúsculas:

jren "^" "" /l /s

Se você quiser que todo o texto entre colchetes seja maiúsculo, e todo o resto seja minúsculo, então é feito facilmente com dois comandos

jren "^" "" /l /s
jren "[.+?]" "uc($0)" /j /s

Se você quiser preservar o caso original de todo o texto entre colchetes e converter todo o restante para minúsculas, será necessária uma expressão regular e uma string de substituição mais complicadas.

jren "([^[]*)([.*?])*" "lc($1?$1:"")+($2?$2:"")" /j /s

Como o JREN é um script em lote, você deve usar CALL JREN se você quiser usar o comando dentro de outro script em lote.

Usar jren /? para obter ajuda sobre todas as opções disponíveis.


2 para resposta № 2
@echo off
setlocal EnableDelayedExpansion

rem Start the recursive process over the tree
call :processThisDir
goto :EOF


:processThisDir

rem Process all filenames in this folder and separate they in three parts
for /F "tokens=1-3 delims=[]" %%a in ("dir /B /A-D") do (
set "left=%%a" & set "right=%%c"

rem Convert left and right parts to lower case
for %%l 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 "left=!left:%%l=%%l!"
set "right=!right:%%l=%%l!"
)

rem Rename this file
ren "%%a[%%b]%%c" "!left![%%b]!right!"
)

rem Recursively process the folders in this folder
for /D %%a in (*) do (
cd "%%a"
call :processThisDir
cd ..
)

exit /B