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