لدى إندورو حل عمل جيد للمشكلة المعلنة. خيار آخر هو ببساطة دفع إلى مكان وجود الملفات. ثم لم تعد بحاجة إلى تضمين المسار في باقي الكود.
نقاط أخرى لا علاقة لها بالسؤال:
ربما يكون من الجيد تهيئة Counter إلى 0 ، فقط في حالة تعيين عملية أخرى بالفعل القيمة على رقم.
أنت لا تحتاج حقا nname
عامل.
أفضل نقل قيمة العداد إلى متغير حتى لا أحتاج إلى استخدام بناء المكالمات. (بالنسبة لأولئك الذين لا يعرفون ، فإن تبديل التوسع المتأخر هو الحماية !
الأحرف التي قد تكون في اسم الملف).
@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
أخيرًا ، يمكن لـ FindStrstr مع خيار /n التخلص من الحاجة إلى الاتصال أو إضافي
@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