Endoro tiene una buena solución de trabajo para el problema declarado. Otra opción es simplemente presionar a donde se encuentran los archivos. Entonces ya no necesita incluir la ruta en el resto del código.
Otros puntos no relacionados con la pregunta:
Probablemente sea una buena idea inicializar el contador a 0, en caso de que algún otro proceso ya establezca el valor en un número.
Realmente no necesitas el nname
variable.
Prefiero transferir el valor del contador a A For Variable para que no necesite usar la construcción de llamadas. (Para aquellos que no saben, la alternativa de expansión tardía es proteger !
caracteres que pueden estar en el nombre del archivo).
@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
Finalmente, Findstr con la opción /n puede eliminar la necesidad de llamar o adicional para
@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