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.
شروط البرمجة