ما هو Errorlevel؟

في Microsoft Windows و MS-DOS ، يمثل errorlevel رقم الأعداد الصحيحة التي يتم إرجاعها بواسطة عملية تابعة عند إنهاؤها.

Errorlevel هو 0 إذا كانت العملية ناجحة.

Errorlevel هو 1 أو أكثر إذا واجهت العملية خطأ.

يكون اختبار errorlevel مفيدًا عند تنفيذ سلسلة من الأوامر ، إما في سطر الأوامر أو في ملف دفعي.

باستخدام تعبير شرطي ، يمكنك تحديد سلسلة من الأوامر تحدث فقط في حالة نجاح أمر سابق. يمكنك أيضًا اختبار الفشل ، وتنفيذ الأوامر فقط في حالة فشل الأمر السابق. في بعض الأحيان ، إذا كان البرنامج يدعمه ، يمكنك أيضًا اختبار أنواع معينة من الأخطاء.

يمكنك أيضًا تنفيذ أمر الفرع ، بحيث يتم تنفيذ مجموعة مختلفة من الأوامر في حالة فشل الأمر السابق.

شرطي "إذا [لا] errorlevel"

يكون التعبير الشرطي " if errorlevel n " صحيحًا إذا كان errorlevel أكبر من أو يساوي n .

وبالمثل ، يكون " if not errorlevel n " صحيحًا إذا كان errorlevel أقل من n .

دعونا نلقي نظرة على بعض الأمثلة عن كيفية استخدامها ، عن طريق تشغيل بعض الأوامر في سطر أوامر Windows.

للبدء ، افتح نافذة موجه الأوامر: اضغط على Win + X (اضغط مع الاستمرار على مفتاح Windows واضغط X ) ، واختر Command Prompt .

الآن لنقم بتشغيل أمر بسيط:

 mkdir mydirectory 

عندما نقوم بتشغيل mkdir (على افتراض أنه لا يوجد بالفعل دليل يسمى "الدليل" في الدليل الحالي) ، يتم إنشاء دليل الدليل الخاص بي . كان الأمر ناجحًا ، لذلك عند إنهاء mkdir ، يقوم بتعيين الخطأ إلى 0 .

دعونا اختبار ل errorlevel 0.

اختبار النجاح: "إن لم يكن errorlevel"

يمكننا اختبار errorlevel 0 (النجاح) مع بيان الشرطية إن لم يكن errorlevel 1 . إذا كان هذا صحيحًا (errorlevel أقل من 1) ، فسيتم تشغيل الأمر الذي يتبع الشرطية. في الأمثلة أدناه ، سنستخدم الأمر echo لطباعة رسالة على الشاشة.

 إن لم يكن errorlevel 1 echo ، فإن الأمر الأخير كان ناجحًا. 
 كان الأمر الأخير ناجحًا. 

كما هو موضح ، كان الأمر mkdir الذي ركضناه أعلاه ناجحًا.

ومع ذلك ، إذا حاولنا إنشاء الدليل مرة أخرى ، فسوف تفشل mkdir ، لأن دليل الدليل موجود بالفعل:

 mkdir mydirectory 
 دليل فرعي أو مثال ملف موجود بالفعل. 

عندما يفشل mkdir ، فإنه يوفر رسالة الخطأ الخاصة به ، "دليل فرعي أو ملف موجود بالفعل" ، ويعين errorlevel على 1. إذا قمنا بتشغيل بيان الشرطية الخاص بنا مرة أخرى:

 إن لم يكن errorlevel 1 echo ، فإن الأمر الأخير كان ناجحًا. 

لا شيء يحدث. لا يعمل أمر الصدى الخاص بنا ، لأننا اختبرنا النجاح - errorlevel أقل من 1 - وهذا الشرط خاطئ.

فشل الاختبار: "إذا errorlevel"

يمكننا على وجه التحديد اختبار الفشل إذا كان errorlevel 1 ، والذي يعود صحيحًا إذا كان errorlevel هو 1 أو أكبر.

 إذا errorlevel 1 echo فشل الأمر الأخير. 
 فشل الأمر الأخير. 

تم استيفاء الشرط (لأن mkdir قام مسبقًا بتعيين errorlevel على 1) ، ويتم تشغيل أمر الارتداد . سيتم تشغيله أيضًا إذا كان errorlevel هو 2 ، 3 ، 4 ، إلخ. إذا كان errorlevel هو 0 ، فلن يعمل.

تنفيذ المتفرعة مع if..else

في الأمثلة المذكورة أعلاه ، قمنا باختبار النجاح أو الفشل ، ولكن ليس كلاهما.

يمكننا اختبار النجاح والفشل باستخدام عبارة if / else للنموذج:

 إذا [ لا ] errorlevel n ( command1 ) آخر ( command2 ) 

ملاحظة: الأقواس ضرورية لفصل الأوامر عن الكلمة الأخرى .

فمثلا:

 mkdir newtest 
 إن لم يكن errorlevel 1 (نجاح الارتداد) آخر (فشل الارتداد) 
 نجاح 
 mkdir newtest 
 دليل فرعي أو ملف newtest موجود بالفعل. 
 إن لم يكن errorlevel 1 (نجاح الارتداد) آخر (فشل الارتداد) 
 بالفشل 

٪ ERRORLEVEL٪ متغير البيئة

في الغالب ، يتم تخزين errorlevel أيضًا في متغير البيئة ٪ ERRORLEVEL٪ . قيمتها هي وسيلة مريحة للوصول إلى errorlevel الحالي الخاص بك.

في المثال التالي ، نقوم بتشغيل الأمر dir مرتين ، مرة واحدة بنجاح ، وفشلنا مرة واحدة. بعد كل ذلك ، نردد قيمة ٪ ERRORLEVEL٪ .

 مثال مقدير 
 مثال دير 
 دليل C: \ Users \ Hope \ سبيل المثال 06/10/2018 09:43 PM. 06/10/2018 09:43 PM .. 0 ملف (ملفات) 0 بايت 2 Dir (s) 50،671،132،672 bytes free 
 صدى٪ ERRORLEVEL٪ 
 0 
 دير بها أخطاء إملائية 
 دليل C: \ Users \ Hope لم يتم العثور على الملف 
 صدى٪ ERRORLEVEL٪ 
 1 

باستخدام٪ ERRORLEVEL٪ في الشرطية

يمكنك استخدام ٪ ERRORLEVEL٪ في الشروط الشرطية ، على سبيل المثال:

 إذا كان٪ ERRORLEVEL٪ NEQ 0 echo Errorlevel لا يساوي الصفر ، فسيتم فشل الأمر الأخير. 

نصيحة: NEQ هو العامل الترابطي الذي يعني "لا يساوي".

ملاحظة:٪ ERRORLEVEL٪ غير صحيح دائمًا

٪ ERRORLEVEL٪ ليس هو نفسه كما لو [ not ] errorlevel ، والقيمتين ليستا متشابهتين دائمًا. على وجه التحديد ، لا يتم دائمًا تحديث ٪ ERRORLEVEL٪ عندما يتغير مستوى الخطأ. لمزيد من المعلومات ، راجع نشر مدونة MSDN هذه بواسطة Raymond Chen.

لهذا السبب ، إذا كنت تختبر errorlevel في بيئة إنتاج ، فمن الأفضل استخدام if [ not ] errorlevel .

أداة البحث Errorlevel

للمستخدمين المتقدمين ومطوري البرامج ، أصدرت Microsoft أداة بحث errorlevel لسطر الأوامر ، err.exe . يسمح لك بالبحث عن مستويات الخطأ حسب الرقم أو الاسم الداخلي ، وتقييد البحث حسب ملف الرأس الذي تم تعريف مستوى الخطأ فيه.

 يخطئ / winerror.h 0 
 # winerror.h المحدد. # لـ hex 0x0 / decimal 0: ERROR_SUCCESS winerror.h # اكتملت العملية بنجاح. NO_ERROR winerror.h SEC_E_OK winerror.h S_OK winerror.h تم العثور على 4 نتائج ل "0" 
 يخطئ / cmdmsg.h 9009 
 تم تحديد # cmdmsg.h. # لعشري 9009 / ست عشري 0x2331: MSG_DIR_BAD_COMMAND_OR_FILE cmdmsg.h # '٪ 1' لم يتم التعرف عليه كأمر داخلي أو خارجي أو # برنامج قابل للتشغيل أو ملف دفعي. تم العثور على 1 نتائج ل "9009" 

يمكنك تنزيل الأداة مباشرة من Microsoft.

شروط البرمجة