Endoro ha una buona soluzione di lavoro per il problema dichiarato. Un'altra opzione è semplicemente spingere dove si trovano i file. Quindi non è più necessario includere il percorso nel resto del codice.
Altri punti non correlati alla domanda:
Probabilmente è una buona idea inizializzare il contatore a 0, nel caso in cui qualche altro processo abbia già impostato il valore su un numero.
Non hai davvero bisogno del nname
variabile.
Preferisco trasferire il valore contatore su una variabile per non aver bisogno di utilizzare il costrutto di chiamata. (Per coloro che non lo sanno, l'attificante di espansione ritardata è proteggere !
caratteri che possono essere nel nome del file).
@echo off
setlocal
set "name1=Bart"
set "name2=Carl"
set "name3=Judy"
pushd "C:\Users\%username%\Downloads"
set /a counter=0
for /f "delims=" %%a in ('dir Export_*.csv /b /a-d /o-d') do (
set "fname=%%~a"
set /a counter+=1
setlocal enableDelayedExpansion
for %%N in (!counter!) do (
endlocal
ren "!fname!" "!name%%N!.csv"
)
)
popd
Infine, FindStr con l'opzione /N può eliminare la necessità di chiamata o aggiuntivo per
@echo off
setlocal
set "name1=Bart"
set "name2=Carl"
set "name3=Judy"
pushd "C:\Users\%username%\Downloads"
for /f "tokens=1* delims=:" %%A in (
'dir Export_*.csv /b /a-d /o-d ^| findstr /n "^"'
) do (
set "fname=%%~B"
setlocal enableDelayedExpansion
ren "!fname!" "!name%%A!.csv"
endlocal
)
popd