Endoro a une bonne solution de travail pour le problème déclaré. Une autre option consiste à simplement pousser vers où se trouvent les fichiers. Ensuite, vous n'avez plus besoin d'inclure le chemin dans le reste du code.
Autres points sans rapport avec la question:
C'est probablement une bonne idée d'initialiser le contre-0, juste au cas où un autre processus définit déjà la valeur sur un nombre.
Tu n'as pas vraiment besoin du nname
variable.
Je préfère transférer la valeur de compteur à une variable pour afin que je n'aie pas besoin d'utiliser la construction d'appels. (Pour ceux qui ne le savent pas, le bilan d'agrandissement retardé est de protéger !
caractères qui peuvent être dans le nom de fichier).
@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
Enfin, Findstr avec l'option / n peut éliminer le besoin d'appel ou supplémentaire pour
@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