Dbenham está certo, seu código postado existente deve renomear arquivos e pastas . O único ponto questionável é o seguinte: move folder folder
com a mesma Source e Target pode resultar em um ponto de interrupção com a mensagem de erro The process cannot access the file because it is being used by another process
(veja um exemplo na saída abaixo). if /I
simples poderia resolvê-lo da seguinte forma:
@echo off
SETLOCAL enableextensions enabledelayedexpansion
SET "old=ACK"
SET "new=XYZ"
for /f "tokens=*" %%f in ('dir /b *%old%*.*') do (
SET "newname=%%~f"
SET "newname=!newname:%old%=%new%!"
if /I "!newname!"=="%%~f" (
echo ==== "%%~f"
) else (
echo move "%%~f" "!newname!"
)
)
ENDLOCAL
goto :eof
Saída:
==>D:\bat\SuperUser1861.bat
move "ACKnowledge" "XYZnowledge"
move "assocbackup.txt" "assocbXYZup.txt"
move "ftypebackup.txt" "ftypebXYZup.txt"
move "StackOverflow" "StXYZOverflow"
==>move "ftypebackup.txt" "ftypebackup.txt"
1 file(s) moved.
==>move "StackOverflow" "StackOverflow"
The process cannot access the file because it is being used by another process.
==>