في بعض الأحيان يكون من المفيد التحقق من ملف دفعي إذا تم تشغيله من موجه أوامر غير مقيد أو كمسؤول. أود أن أشارككم حيلة أستخدمها للقيام بذلك. تعتمد الفكرة الرئيسية لخدعتي على قيمة متغير البيئة الخاص٪ errorlevel٪ الذي يخزن كود الخروج لمعظم تطبيقات وأوامر وحدة التحكم. دعونا نرى هذا في العمل.
إعلانات
عندما تنتهي بعض تطبيقات وحدة التحكم من عملها بشكل صحيح ، يخزن المتغير٪ errrorlevel٪ القيمة 0 كقيمة.
افتح مثيل موجه أوامر جديد وقم بتشغيل الأمر 'dir'. بعد ذلك ، اطبع قيمة٪ errorlevel٪ باستخدام الأمر echo:
صدى dir٪ errorlevel٪
سينتج 0 كناتج.
الآن ، دعنا نحاول تنفيذ أمر يتطلب ارتفاعًا ، من نافذة موجه أوامر عادية غير مرتفعة. على سبيل المثال ، لنجرب ملف الملفات المفتوحة الأمر الذي يتطلب حقوق المسؤول.
إذا قمت بطباعة القيمة٪ errorlevel٪ ، فلن تكون القيمة 0 لأن الأمر openfiles سيفشل في إظهار الملفات المفتوحة بدون حقوق المسؤول.
ومع ذلك ، إذا قمت بتشغيله من موجه أوامر غير مقيد ( إليك كيفية فتح موجه cmd المسؤول ) ، سيظهر لك الملفات المفتوحة وسيعيد 0 ، كما هو متوقع.
باستخدام هذه الميزة ، من الممكن تنفيذ فحص بسيط في الملف الدفعي:
echo off openfiles> NUL 2> & 1 if NOT٪ ERRORLEVEL٪ EQU 0 goto NotAdmin echo مرحبًا من موجه الأوامر المرتفع goto End: NotAdmin echo موجه الأوامر هذا لم يتم رفعه: End
لاحظ أنني أستخدم إعادة توجيه الإخراج لمنع أي إخراج من الأمر openfiles. في '> NUL 2> & 1 part' ، يتم إعادة توجيه الإخراج الافتراضي للأمر إلى أي مكان (NUL) ، ويتم إعادة توجيه ناتج الخطأ إلى الإخراج القياسي ، أي إلى NUL أيضًا.
بدلاً من الأمر openfiles ، يمكنك استخدام أي أمر يتطلب ارتفاعًا ، على سبيل المثال ، ملف جلسة صافي أمر.
هذا هو.