Eu discordo de Seth e Luru neste caso especial, há uma solução maravilhosa com uma pequena falha, esse cmd linha deve remediar que (se a saída parece certo, remova o eco):
For /r X:\Path %A in (.) do @For /f "eol=: delims=" %F in ('dir /l/b/a-d "%A" 2^>NUL') do @Ren "%~fA\%F" "%F"
Em um lote, o %
precisa ser dobrado:
For /r X:\Path %%A in (.) do @for /f "eol=: delims=" %%F in (
'dir /l/b/a-d "%%A" 2^>NUL'
) do Ren "%%~fA\%%F" "%%F"
Pelo contrário, a conversão para maiúsculas seria desajeitada em lote.
Uma solução de powershell:
Get-ChildItem -Path X:\path -File|
where-Object {$_.Name -cne $_.Name.ToLower()}|
Rename-Item -NewName {$_.Name.ToLower()} -confirm
O mesmo acontece com os aliases de um único liner:
gci -Path X:\path -File|? {$_.Name -cne $_.Name.ToLower()}|Ren -new {$_.Name.ToLower()} -confirm