كيفية القيام بشيء ما لكل ملف في الدليل باستخدام برنامج نصي دفعي

StackOverflow https://stackoverflow.com/questions/180741

سؤال

كيف يمكنك التكرار على كل ملف في دليل باستخدام ملف .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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top