Para incluir o caminho de arquivo completo, você precisará fazer algum processamento variável, que não funciona no lote for
loops sem ativar a expansão atrasada.
Use o arquivo de lote abaixo no lugar do que você tinha originalmente.
@echo off
pushd "Folder"
setlocal enabledelayedexpansion
for /d %%D in (*) do (
pushd "%%D"
for /r %%F in (*) do (
for %%P in ("%%F\..") do (
set _path=%%~pnxP
set _path=!_path:~1!
ren "%%F" "!_path:\=_!_%%~nxF"
)
)
popd
)
popd
As diferenças são:
-
setlocal enabledelayedexpansion
- ativar a expansão atrasada -
set _path=%%~pnxP
- cria uma variável para armazenar o caminho completo (excluindo a letra da unidade) do arquivo -
set _path=!_path:~1!
- o caminho completo inclui o\
emC:\
no começo, então precisamos remover isso. -
echo "%%F" "!_path:\=_!_%%~nxF"
- substitua as barras invertidas por sublinhados