Ao renomear um arquivo, você não pode incluir o caminho da pasta no nome do destino. Você pode usar %%~nxG
para obter o nome e a extensão do arquivo sem o caminho. Você não precisa da variável oldname - você pode simplesmente usar %%G
. Você pode eliminar uma linha e fazer a manipulação de string diretamente na instrução REN.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
CD F:\Mega.Pack-128x128\textures\
For /R %%G in (*-min.png) DO (
SET "newname=%%~nxG"
REN "%%G" "!newname:~0,-8!.png"
)
Observe que os itens acima falharão se qualquer parte do caminho do arquivo incluir o caractere !
, porque a expansão da variável FOR ocorre antes da expansão atrasada, portanto, o valor será corrompido. Qualquer !
pode ser preservado, garantindo que a expansão atrasada seja desativada quando a variável FOR for expandida. Isso requer ativar e desativar a expansão atrasada dentro do loop.
@echo off
setlocal disableDelayedExpansion
cd F:\Mega.Pack-128x128\textures\
for /r %%G in (*-min.png) do (
set "oldpath=%%G"
set "newname=%%~nxG"
setlocal enableDelayedExpansion
ren "!oldpath!" "!newname:~0,-8!.png"
endlocal
)