كيفية القيام بشيء ما لكل ملف في الدليل باستخدام برنامج نصي دفعي
-
05-07-2019 - |
سؤال
كيف يمكنك التكرار على كل ملف في دليل باستخدام ملف .bat أو .cmd؟
للتبسيط، يرجى تقديم إجابة تعكس فقط اسم الملف أو مسار الملف.
المحلول
for /f %f in ('dir /b c:\') do echo %f
<ع> استخدام ملف دفعي:
for /f %%f in ('dir /b c:\') do echo %%f
على تحديث : إذا الدليل يحتوي على ملفات مع مساحة في الأسماء، وكنت بحاجة إلى تغيير محدد الأمر for /f
يستخدم. على سبيل المثال، يمكنك استخدام شار الأنابيب.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
<القوي> تحديث 2 : ل(سريع سنة واحدة ونصف بعد الإجابة :-) الأصلي) إذا كان اسم الدليل نفسه لديه مساحة في الاسم، يمكنك استخدام الخيار usebackq
على for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
وإذا كنت بحاجة إلى استخدام إعادة توجيه الإخراج أو الأنابيب الأوامر، استخدم حرف الهروب (^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
نصائح أخرى
وبدلا من ذلك، استخدام:
forfiles /s /m *.png /c "cmd /c echo @path"
والأمر FORFILES متاح في ويندوز فيستا وما فوق.
وأسهل طريقة:
ومن سطر الأوامر، استخدم:
for %f in (*.*) do echo %f
ومن ملف دفعة (مضاعفة علامات٪ في المئة):
for %%f in (*.*) do echo %%f
ومن ملف دفعة مع المجلد المحدد كمعلمة 1ST:
for %%f in (%1\*.*) do echo %%f
يستخدم
for /r path %%var in (*.*) do some_command %%var
مع:
- المسار هو مسار البداية.
- %%var هو بعض المعرفات.
- *.* كونه قناع ملف أو محتويات متغير.
- some_command هو الأمر الذي يجب تنفيذه باستخدام المسار وvar متسلسل كمعلمات.
وهناك طريقة أخرى:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
وكان لي بعض البرامج الضارة التي تميز كل الملفات في دليل مخفي / النظام / للقراءة فقط. إذا كان أي شخص آخر يجد نفسه في هذه الحالة، مؤتمر نزع السلاح إلى الدليل وتشغيل for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.