Windows Automation

معالجة الملفات بكفاءة في المجلدات الفرعية باستخدام أوامر المعالجة الدفعية

Spread the love

معالجة الملفات بكفاءة في الدلائل الفرعية باستخدام أوامر المعالجة الدُفعية

فهم أساسيات أوامر المعالجة الدُفعية

تظل أوامر المعالجة الدُفعية، على الرغم من قدمها، أداة قيّمة لأتمتة مهام Windows. أوامر المعالجة الدُفعية هي ملفات نصية بسيطة تحتوي على أوامر تُنفَّذ تباعًا بواسطة cmd.exe، مما يوفر نهجًا مباشرًا لمعالجة الملفات وإدارة النظام. وعادةً ما يكون امتدادها .bat أو .cmd.

تشمل العناصر الأساسية:

  • المتغيرات: تخزين البيانات (مثل مسارات الملفات) باستخدام الأمر set (مثل: set myVar=value).
  • الأوامر: تعليمات مثل dir، وcopy، وdel، وmkdir، وif.
  • بُنى التحكم: تمكّن من التنفيذ الشرطي والتكرار باستخدام if، وfor، وgoto.

معالجة الملفات بشكل متكرر في الدلائل الفرعية

تُعدّ حلقة for /r أمرًا بالغ الأهمية للتنقل في الدلائل بشكل متكرر. يُوجّه المفتاح /r الحلقة للبحث في الدلائل الفرعية. يوضّح هذا المثال جميع الملفات من نوع .txt ضمن دليل محدد ودلائله الفرعية:


@echo off
setlocal

set "rootDir=C:MyDirectory"  'استبدل بمسار الدليل الجذر الخاص بك

for /r "%rootDir%" %%a in (*.txt) do (
  echo معالجة الملف: %%a
)

endlocal

شرح العناصر الرئيسية:

  • @echo off: يُلغي عرض الأوامر.
  • setlocal: يُنشئ بيئة محلية لعزل متغيرات البرنامج النصي.
  • for /r "%rootDir%" %%a in (*.txt) do (...): الحلقة المتكررة. يحتوي %%a على مسار الملف الكامل.
  • endlocal: يُنهي البيئة المحلية.

إضافة عمليات ملفات مخصصة

إلى جانب سرد الملفات، يمكنك دمج أوامر متنوعة داخل الحلقة. يكتب هذا المثال جميع الملفات من نوع .txt إلى دليل احتياطي:


@echo off
setlocal

set "rootDir=C:MyDirectory"
set "backupDir=C:Backup"

if not exist "%backupDir%" mkdir "%backupDir%"

for /r "%rootDir%" %%a in (*.txt) do (
  copy "%%a" "%backupDir%" & if errorlevel 1 echo خطأ في نسخ %%a
)

endlocal

تقنيات معالجة الأخطاء المتينة

معالجة الأخطاء الفعالة أمر حيوي. يُحقق برنامج النص المُحسَّن هذا ما إذا كان الدليل الاحتياطي موجودًا ويعالج أخطاء النسخ المحتملة:


@echo off
setlocal

set "rootDir=C:MyDirectory"
set "backupDir=C:Backup"

if not exist "%backupDir%" (
  mkdir "%backupDir%"
  if errorlevel 1 (
    echo خطأ في إنشاء الدليل الاحتياطي! الخروج.
    exit /b 1
  )
)

for /r "%rootDir%" %%a in (*.txt) do (
  copy "%%a" "%backupDir%"
  if errorlevel 1 (
    echo خطأ في نسخ %%a. المُتابعة...
  )
)

endlocal

تقنيات متقدمة وتحسينات

للسيناريوهات الأكثر تعقيدًا أو الدلائل الكبيرة، ضع في اعتبارك هذه التحسينات:

  • forfiles: يوفر تصفية متقدمة (مثلًا، حسب التاريخ، أو الحجم).
  • PowerShell: يوفر أدوات أكثر قوة وكفاءة لمعالجة الملفات المكثفة.
  • المعالجة المتوازية: استكشف تقنيات معالجة العديد من الملفات في وقت واحد (يتطلب كتابة برامج نصية أكثر تقدمًا).

الأسئلة الشائعة

  • س: معالجة المسافات في مسارات الملفات: ضع دائمًا المسارات بين علامتي اقتباس مزدوجتين (").
  • س: معالجة الملفات المُعدّلة بعد تاريخ معين: استخدم forfiles مع المفتاح /d.
  • س: استخدام رموز بديلة أخرى: نعم، استخدم ? (حرف واحد) و* (صفر حرف أو أكثر).
  • س: تحسين الأداء: بالنسبة للدلائل الكبيرة جدًا، يوفر PowerShell أداءً أفضل بكثير.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *