أمر SET - العمل مع متغيرات بيئة Windows. أساسيات ملف BAT

07.08.2019

0.00 (1 )

النهج العام.

ملفات الأوامر هي ملفات نصية ذات امتداد مضربأو كمد، والتي تمثل أسطرها أوامر أو أسماء الملفات القابلة للتنفيذ. عند تشغيل ملف دفعي، يتم التحكم فيه بواسطة معالج أوامر نظام التشغيل (يسمى غالبًا مترجم الأوامر)، والذي يقرأ ويفسر الأسطر الموجودة في الملف الدفعي بشكل تسلسلي. بالنسبة لنظام التشغيل Windows9X يتم ذلك com.command.com، لـ WinNT/2K/XP - cmd.exe. يمكن أن تحتوي أسطر الملفات الدفعية على أوامر من معالج الأوامر نفسه (FOR، GOTO، IF، وما إلى ذلك) أو أسماء الوحدات القابلة للتنفيذ (net.exe، وregedit.exe، وwin.com، وما إلى ذلك). في أنظمة التشغيل WinNT/2K/XP، يمكنك الحصول على مساعدة مختصرة حول تكوين الأوامر باستخدام سطر الأوامر:

أو بأمر محدد:

مساعدة اسم الأمر

لعرض نص التعليمات ليس على الشاشة، ولكن في ملف، يمكنك استخدامه إعادة توجيه الإخراج . عند استخدام سطر الأوامر، يكون جهاز الإدخال الافتراضي هو لوحة المفاتيح وجهاز الإخراج هو الشاشة، ومع ذلك يمكن إعادة تعيين هذه الأجهزة باستخدام أحرف إعادة التوجيه

< - إعادة توجيه الإدخال

> - إعادة توجيه الإخراج (أو > > - إعادة التوجيه إلى ملف موجود، عندما يتم إلحاق بيانات الإخراج بنهاية الملف.)

لإخراج دفق بيانات الأمريساعدفي ملف help.txt، سيكون سطر الأوامر كما يلي:

مساعدة> مساعدة.txt

لعرض المساعدة للأمر GOTO في ملف goto.txt:

مساعدة انتقل إلى> goto.txt

استخدام متغيرات البيئة.

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

تعيين [متغير=[سلسلة]]

عاملاسم متغير البيئة

خطسلسلة أحرف مخصصة للمتغير المحدد.

على سبيل المثال، سطر الأوامر

تعيين mynane = فاسيا

سيضيف متغير myname الذي يأخذ القيمة Vasya.

يمكنك الحصول على قيمة المتغير في البرامج والملفات الدفعية باستخدام اسمه محاطًا بعلامات النسبة المئوية ( %) . على سبيل المثال الأمر

سيتم عرض كلمة الوقت، والأمر

سيتم عرض قيمة متغير الوقت، الذي يأخذ قيمة الوقت الحالي.

وسطر الأوامر

تعيين المسار=C:myprog;%path%

سيضيف الدليل C:myprog إلى مسار البحث عن البرامج القابلة للتنفيذ، الموضحة بقيمة متغير PATH

يؤدي تنفيذ أمر SET بدون معلمات إلى عرض القيم الحالية للمتغيرات على الشاشة بالشكل:

NUMBER_OF_PROCESSORS=1 - عدد المعالجات

OS=Windows_NT - نوع نظام التشغيل

Path=E:WINDOWSsystem32;E:WINDOWS;E:Program FilesFar - مسار البحث عن الملفات القابلة للتنفيذ.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH - امتدادات للملفات القابلة للتنفيذ.

PROCESSOR_ARCHITECTURE=x86 - بنية المعالج.

PROCESSOR_IDENTIFIER=x86 Family 6 Model 8 الخطوة 1، AuthenticAMD - معرف المعالج.

PROCESSOR_LEVEL=6 - مستوى المعالج (رقم الطراز).

PROCESSOR_REVISION=0801 - إصدار المعالج.

ProgramFiles=E:ملفات البرنامج - المسار إلى مجلد "ملفات البرنامج".

PROMPT=$P$G - تنسيق موجه سطر الأوامر $P - المسار للدليل الحالي $G - علامة ">".

SystemDrive=E: - حرف محرك أقراص النظام.

SystemRoot=E:WINDOWS - دليل نظام التشغيل Windows.

لا يتم إرجاع قيم بعض المتغيرات بواسطة أمر SET. هذه هي المتغيرات التي تتغير قيمها ديناميكيًا:

%CD% - يأخذ قيمة سلسلة الدليل الحالية.

%DATE% - يأخذ قيمة التاريخ الحالي.

%TIME% - يقبل قيمة الوقت الحالية.

%RANDOM% - يقبل قيمة الرقم العشري العشوائي في النطاق من 1 إلى 32767.

%ERRORLEVEL% - يقبل القيمة الحالية لرمز الخروج الخاص بالمهمة ERRORLEVEL

%CMDEXTVERSION% - يأخذ قيمة إصدار معالج الأوامر CMD.EXE لمعالجة الأوامر الموسعة.

%CMDCMDLINE% - يأخذ قيمة السطر الذي يسمى الصدفة.

يمكنك استخدام سطر الأوامر لعرض قيمة المتغير:

إيكو %متغير%

معلمات الإدخال للملف الدفعي.

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

ملف الخفافيش< параметр1 > , < параметр2 >, ... < параметрN >

في الملف الدفعي نفسه، ستكون المعلمة الأولى متاحة كمتغير %1 ، ثانية - %2 وما إلى ذلك وهلم جرا. اسم الملف الدفعي نفسه متاح كمتغير %0 . على سبيل المثال، لنقم بإنشاء ملف دفعي ستكون مهمته عرض قيم المعلمات المدخلة على الشاشة. عادةً ما يكون الأمر المستخدم لعرض النص هو

صدى صوت< текст >

ومع ذلك، إذا تم استبدال النص بـ %1، فسيتم إرجاع المعلمة الأولى، مع %2 - الثانية، وما إلى ذلك.

قم بإنشاء ملف parm.bat بالمحتوى التالي:

صدى المعلمة الأولى=%1

صدى المعلمة الثانية=%2

صدى المعلمة الثالثة = %3

وتشغيله باستخدام الأمر التالي:

parm.bat الثانية الأولى "كلمتان"

بعد تنفيذه، ستفهم كيفية عمله وأن المعلمات ذات المسافات يجب أن تكون محاطة بعلامات اقتباس مزدوجة. لمنع عرض الخطوط التي تمت معالجتها بواسطة معالج الأوامر على الشاشة، يمكنك استخدام الأمرصدى خارج، ووضعه على السطر الأول من الملف الدفعي. لجعل سطرًا في ملف دفعي يتم تجاهله بواسطة الصدفة، ضعه في بداية السطرم.< пробел > . بهذه الطريقة يمكنك وضع التعليقات، والتي غالبًا ما تكون مفيدة في الملفات الدفعية الكبيرة:

يقوم rem ECHO OFF بإيقاف تشغيل وضع عرض محتويات سطور ملفات الأوامر على الشاشة

سوف يعرض REM نتيجة تنفيذها فقط.

صدى المعلمة الأولى=%1

صدى المعلمة الثانية=%2

صدى المعلمة الثالثة = %3

حاول استبدال ECHO OFF بـECHO OFF - النتيجة تتحدث عن نفسها. لم يعد يتم عرض الخط الذي يقوم بإيقاف تشغيل وضع الإخراج على الشاشة.

التحولات والتسميات.

في الملفات الدفعية، يمكنك استخدام أوامر الانتقال الشرطي التي تغير منطق عملها اعتمادًا على استيفاء شروط معينة. لتوضيح كيفية استخدام الانتقالات الشرطية، فلنقم بإنشاء ملف دفعي يكون غرضه تعيين حرف محرك أقراص محدد مسبقًا للوسائط القابلة للإزالة، والتي ستكون محركات أقراص فلاش. الشروط هي كما يلي - يوجد محركي أقراص فلاش، أحدهما يجب أن يكون مرئيًا في Explorer كمحرك الأقراص X: والثاني كمحرك الأقراص Y:، بغض النظر عن منفذ USB المتصلين به. سنفترض أنه يمكن توصيل الأقراص الحقيقية كـ F: أو G: سنحدد الأقراص من خلال وجود ملف باسم معين (من الأفضل جعل مثل هذا الملف مخفيًا في الدليل الجذر وتسميته بشيء غير معتاد):

Flashd1.let - على القرص الأول

Flashd2.let - في الثانية

أولئك. الغرض من الملف الدفعي هو التحقق من وجود الأقراص القابلة للإزالة F:و ز:ملفات Flashd1.letأو Flashd2.letواعتمادًا على أي واحد موجود، قم بتعيين حرف محرك أقراص العاشر:أو ص:

للبحث عن ملف على القرص، استخدم الأمرفي حالة وجود:

أمر اسم الملف إذا كان موجودًا

أسهل طريقة لاستخدامه كأمر هيفرعية، والذي يطابق اسم محرك الأقراص والدليل.

الفرع العاشر: ج: - ينشئ قرصًا افتراضيًا X:، وستكون محتوياته هي الدليل الجذر لمحرك الأقراص C:

قم بإنشاء ملف دفعي setXY.bat باستخدام الأسطر التالية:

بعد تنفيذ مثل هذا الملف، سيكون لديك محركات الأقراص X: وY: ولكن إذا قمت بتنفيذ مثل هذا الملف مرة أخرى، فسيعرض الأمر SUBST رسالة خطأ - بعد كل شيء، محركات الأقراص X: وY: موجودة بالفعل.

يُنصح بتجاوز تنفيذ SUBST إذا تم بالفعل إنشاء الأقراص الافتراضية X: وY: (أو قم بحذفها باستخدام SUBST مع المعلمة -d قبل التثبيت). تعديل الملف الدفعي باستخداماذهب إلى- نقل التحكم إلى سطر من الملف الدفعي عن طريق التسمية.

اذهب إلى التسمية

يجب أن تكون التسمية على سطر منفصل وتبدأ بنقطتين. فلنقم بإجراء تغييرات على الملف الدفعي الخاص بنا حتى لا نتلقى رسائل خطأ:

REM إذا لم يكن X موجودًا - فانتقل إلى ملصق SETX

إذا لم يكن موجودًا X: انتقل إلى SETX

REM في حالة وجود X: - دعنا ننتقل إلى التحقق من وجود Y:

إذا كان موجودًا G:flashd1.let SUBST X: G:

إذا كان موجودًا F:flashd1.let SUBST X: F:

REM إذا كان Y: موجودًا - أكمل الملف الدفعي.

إذا كان موجودًا Y: انتقل إلى الخروج

إذا كان موجودًا G:flashd2.let SUBST Y: G:

إذا كان موجودًا F:flashd2.let SUBST Y: F:

خروج REM من الملف الدفعي

لقد اختفت رسالة الخطأ SUBST. يمكن تتبع علامات الأخطاء عند تنفيذ الأوامر في ملف الأوامر نفسه عن طريق تحليل المتغيرمستوى الخطأوالتي تتشكل قيمتها أثناء تنفيذ معظم البرامج. ERRORLEVEL هو 0 إذا اكتمل البرنامج بدون أخطاء و1 إذا حدث خطأ. وقد تكون هناك قيم أخرى إذا تم توفيرها في البرنامج المنفذ.

يمكنك أيضًا استخدام ملف دفعي كأمر على سطر في ملف دفعي. علاوة على ذلك، لنقل والعودة إلى نقطة تنفيذ الملف الدفعي الاستدعاء، يتم استخدام الأمريتصل. لنقم بإنشاء ملف أوامر test.bat بالمحتوى التالي:

إيكو نداء 1.bat

عودة إيكو.

وملف 1.bat يحتوي على الأمريوقف،تعليق تنفيذ ملف دفعي حتى يتم الضغط على أي مفتاح.

عند تنفيذ test.bat، سيتم عرض رسالة على الشاشة

اتصل بـ 1.بات

وسيتم منح التحكم إلى 1.bat باستخدام أمر الإيقاف المؤقت. بعد الضغط على أحد المفاتيح الموجودة على لوحة المفاتيح، سيتم التحكم في سطر الأوامر "ECHO Return". وسيتم عرضه على الشاشة

إذا قمت بإزالة CALL من test.bat، فلن يتم تنفيذ الإرجاع من الملف 1.bat. بالمناسبة، من خلال نقل التحكم إلى ملف دفعي، يمكنك تنظيمه للتكرار. حاول إضافة السطر التالي إلى نهاية ملف test.bat:

يمكنك الخروج من حلقة الملف الدفعي بالضغط على تركيبة CTRL-Break. من الممكن استخدام الأمر CALL لاستدعاء إجراء داخل ملف دفعي. في هذه الحالة، الوسيطة ليست اسم الملف الخارجي، بل التسمية:
....
الاتصال:proc1
....
:proc1
....
مخرج
....

إنشاء الملفات.

لا يوجد أمر خاص في نظام التشغيل Windows لإنشاء ملف، ولكن يمكنك الاستغناء عنه بسهولة بعدة طرق:

النسخ من وحدة التحكم إلى الملف

انسخ ملف myfile.txt

عند تنفيذ هذا الأمر، سيتم كتابة البيانات من لوحة المفاتيح (جهاز CON) إلى الملف myfile.txt. سيؤدي الضغط على F6 أو CTRL-Z إلى إكمال الإخراج.

إعادة توجيه الإخراج

صدى 1> ملفي.txt

سيؤدي تشغيل هذا الأمر إلى إنشاء ملف myfile.txt يحتوي على الحرف "1"

الجمع بين إعادة توجيه المدخلات والمخرجات:

نسخ CON > ملفي.txt< xyz

عند تنفيذ هذا الأمر، كما في الحالة الأولى، يتم استخدام النسخ من وحدة التحكم إلى ملف، ولكن بدلاً من الإدخال من لوحة المفاتيح، يتم استخدام الإدخال من الجهاز غير الموجود xyz. سيعرض النظام رسالة تفيد بعدم وجود مثل هذا الجهاز، ولكن سيتم إنشاء الملف الفارغ myfile.txt بنجاح.
الخيار البسيط للغاية هو النسخ من جهاز وهمي يحمل الاسم لاغيةإلى ملف.
انسخ ملف myfile.txt فارغًا

إذا كنت تحتاج في كثير من الأحيان إلى إنشاء ملفات فارغة، فيمكنك إعداد ملف دفعي خاص بك (على سبيل المثال، newfile.bat أو حتى أفضل، nf.bat)، وتمرير اسم الملف الذي سيتم إنشاؤه كمعلمة عند التشغيل.

محتويات الملف:

ضع هذا الملف الدفعي في دليل النظام لديك (C:windowssystem32 أو أي شيء موجود في مسار بحث PATH).

سطر الأوامر:

newfile.bat myfile.txt

أو

nf.bat myfile.txt

أو
نف myfile.txt

هنا فريقك nfلإنشاء ملف فارغ في سطر الأوامر.

تعيين نفس حرف محرك الأقراص إلى محرك أقراص قابل للإزالة.

الهدف هو التأكد من إمكانية الوصول دائمًا إلى محرك أقراص USB قابل للإزالة (محرك أقراص فلاش) بنفس الحرف، بغض النظر عن جهاز الكمبيوتر المستخدم عليه وكيفية توصيله. لحلها، سوف نستخدم الأمر SUBST المذكور أعلاه. لنحدد الحرف المطلوب للقرص القابل للإزالة، على سبيل المثال - X. اسم القرص الذي تم تشغيل الملف الدفعي منه متاح كمتغير %~d0. قم بإنشاء ملف دفعي بالمحتوى التالي:
@صدى خارج
الفرعية X: %~d0
مما يعني إنشاء قرص افتراضي X:، والذي تم تعيينه على القرص الفعلي الذي تم تشغيل ملف الأوامر منه.
يمكن الحصول على رؤية إضافية حول القيم البديلة للمتغير %0 من الملف الدفعي التالي:

@صدى خارج
معالجة ملف الصدى - %0
ECHO تاريخ/وقت إنشاء/تعديل الملف الدفعي - %~t0
مسار الملف الدفعي ECHO - "%~f0"
قرص ملف أمر ECHO - %~d0
دليل الملفات الدفعية ECHO - "%~p0"
اسم الملف الدفعي ECHO - %~n0
امتداد الملف الدفعي ECHO - %~x0
ECHO الاسم المختصر والامتداد - %~s0
سمات الملف الدفعي ECHO - %~a0
حجم الملف الدفعي ECHO - %~z0

إنشاء أجيال من الأرشيفات بناءً على التواريخ والأوقات.

دعونا نحل المشكلة التالية - نحتاج إلى إنشاء أرشيف للملفات الموجودة في الدليل C:Program FilesFAR. يجب أن يتكون اسم ملف الأرشيف من الوقت الحالي (ساعات.دقائق.ثواني - HH.MM.SS.rar)، ويجب وضعه في دليل جديد، يجب أن يتكون اسمه من التاريخ الحالي (يوم) .شهر.سنة - د.ش.س.س.س. للأرشفة سوف نستخدم أرشيفي RAR. تنسيق الإطلاق لإنشاء أرشيف:

رار أ -ر< путь и имя архива > < Путь и имя архивируемых данных >

أ- أمر إنشاء الأرشيف.
- المفتاح الذي يحدد أرشفة الدلائل الفرعية (نظرًا لوجود أدلة فرعية في المجلد المصدر).

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

  • في الملفات الدفعية، يمكنك الوصول إلى التاريخ الحالي والوقت الحالي - المتغيرات %DATE% و%TIME%
  • في الملفات الدفعية، يمكنك إنشاء متغيرات مؤقتة باستخدام أمر SET.
  • يمكن تكوين قيمة المتغيرات المؤقتة بناءً على %DATE% و%TIME% عن طريق تخطي و/أو استبدال أجزائها باستخدام نفس أمر SET.

    يبدو التاريخ الذي تم الحصول عليه من المتغير %DATE% بالإعدادات الإقليمية القياسية كما يلي:
    الإثنين 21/01/2005- يوم الأسبوع (حرفين) - المسافة - التاريخ (10 أحرف)
    على سبيل المثال، لنقم بإنشاء دليل باستخدام الأمر MD< имя каталога >.
    نقوم بإنشاء متغير مؤقت VDATE في الذاكرة ونخصص له قيمة متغير البيئة DATE، بدون الأحرف الثلاثة الأولى - 20/01/2005:

    تعيين VDATE=%التاريخ:~3%

    قم بإنشاء دليل على محرك الأقراص C:، اسمه = التاريخ الحالي من المتغير VDATE:

    إم دي ج:\%VDATE%
    بعد تنفيذ هذا الأمر، سيتم إنشاء دليل باسم 20/01/2005 على محرك الأقراص C:

    الوقت الذي تم الحصول عليه من المتغير %TIME%:
    14:30:59.93 - الساعات والدقائق والثواني ومئات من الثانية.
    ربما تكون أجزاء المئات غير ضرورية في اسم ملف الأرشيف. قم بإنشاء متغير مؤقت VTIME وقم بتعيينه في الوقت الحالي دون آخر 3 أحرف
    تعيين VTIME=%الوقت:~0,-3%
    الآن VTIME = 14:30:59، ولكن لا يمكن استخدام العلامة ": في اسم الملف، لذا دعنا نستبدلها بنقطة.
    تعيين VTIME=%VTIME::=.%
    سوف يأخذ المتغير VTIME القيمة 14.30.59 بالنسبة لاسم الملف الذي سيفعله.

    لنبدأ تشغيل الأرشيف:

    يمكنك الآن إنشاء ملف دفعي بالمحتويات:

    تعيين VDATE=%التاريخ:~3%
    MD ج:\%VDATE%
    تعيين VTIME=%الوقت:~0,-3%
    تعيين VTIME=%VTIME::=.%
    rar a -r C:\%VDATE%\%VTIME%.rar "C:Program filesfar*.*"

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

    إنشاء أرشيفات باستخدام متغيرات ملف تعريف المستخدم.

    يقوم هذا الملف الدفعي بإنشاء أرشيفات لمحتويات مجلد "المستندات" الخاص بمستخدمي Win2K/XP، ووضعها في الدلائل
    C:ARHIVمستنداتياسم المستخدمالتاريخالوقت

    يتم استخدام المتغيرات USERPROFILE وUSERNAME وWINDIR، لذلك لن يعمل هذا الملف الدفعي في WIN9X. (على الرغم من ذلك، إذا كنت ترغب في ذلك، يمكنك إدراج أوامر في autoexec.bat لتعيين قيم هذه المتغيرات واستخدامها في إصدار مستخدم واحد دون أي تغييرات تقريبًا). تم التعليق على محتويات الملف الدفعي ويجب ألا تسبب صعوبة كبيرة إذا فهمت المثال السابق:

    @صدى خارج
    rem يعين المتغير FROM - مكان الحصول على البيانات للأرشفة
    تعيين من =٪ USERPROFILE٪ المستندات
    rem يعين المتغير TO - مكان وضع الأرشيفات
    اضبط TO=C:arhivMy document\%USERNAME%
    rem لنقم بإنشاء دليل الصيانة
    م "%TO%"
    rem لنشكل اسم الدليل الفرعي من التاريخ الحالي
    التاريخ الحالي مع الإعدادات الافتراضية لـ Win2K - الإثنين 25/04/2005
    rem التاريخ الحالي مع الإعدادات الافتراضية لنظام التشغيل WinXP - 25/04/2005
    rem من التاريخ الحالي سنشكل اسم الدليل الفرعي - 04/25
    rem بشكل افتراضي Windir لنظام التشغيل WinXP هو C:WINDOWS، وبالنسبة لـ Win2K - C:WINNT
    إذا /I %Windir% == C:WINNT GOTO Win2K
    تعيين vdate=%DATE:~0.-5%
    انتقل إلى SetFileName
    :WIN2K
    تعيين vdate=%DATE:~3.-5%
    rem لنقم بإنشاء اسم ملف أرشيف من الوقت الحالي - 12:00:00.99
    rem سوف نتخلص من أجزاء من المئات من الثانية ونستبدل الرمز: بالرمز. النتيجة - 12.00.00
    :SetFileName
    تعيين vtime=%TIME:~0,-3%
    تعيين vtime=%vtime::=.%
    rem قم بإنشاء دليل فرعي لملف الأرشيف
    MD "%TO%\%VDATE%"
    أمر rem للأرشفة. يعد رمز التبديل -r ضروريًا للأرشفة باستخدام المجلدات الفرعية
    خيار rem لأرشيف ARJ: arj a -r "%TO%\%VDATE%\%VTIME%.arj" "%FROM%*.*"
    rem عند استخدام أرشيفي RAR:
    rar a -r "%TO%\%VDATE%\%VTIME%.rar" "%FROM%*.*"

    تنفيذ الأوامر حسب الجدول الزمني.

    يوجد في WIN2K/XP أداة مساعدة لسطر الأوامرفي،يسمح لك بتنفيذ أمر أو ملف دفعي في وقت محدد على جهاز كمبيوتر محلي أو بعيد. لاستخدام الأمر AT، يجب أن تكون خدمة "جدولة المهام" قيد التشغيل (عادةً ما يتم تشغيلها بشكل افتراضي أثناء تثبيت النظام).

    في [\ اسم الكمبيوتر] [ [الكود] | /يمسح ]

    في وقت [\اسم الكمبيوتر].

    [ /كل:يوم[,...] | /التالي:اليوم[،...]] "الأمر"

    \اسم الحاسوباسم الكمبيوتر البعيد. إذا تم حذف هذه المعلمة،

    يتم استخدام الكمبيوتر المحلي.

    شفرة الرقم التسلسلي للمهمة المجدولة. يُشار إليه إذا كنت بحاجة إلى إلغاء مهمة مجدولة بالفعل باستخدام المفتاح /يمسح.

    /يمسحإلغاء مهمة مجدولة. إذا تم حذف رمز المهمة،

    يلغي جميع المهام المجدولة للمحدد

    حاسوب.

    /نعمإلغاء طلب التأكيد عند إلغاء الكل

    المهام المخططة.

    وقتحان الوقت لبدء الأمر.

    /تفاعليالسماح بتفاعل المهام مع المستخدم،

    العمل على الكمبيوتر عند بدء المهمة. المهام التي يتم تشغيلها بدون هذا المفتاح تكون غير مرئية لمستخدم الكمبيوتر.

    /كل يوم[،...]يتم إطلاق المهمة في الأيام المحددة من الأسبوع أو

    شهر. إذا تم حذف التاريخ، يتم استخدام اليوم الحالي

    /اليوم التالي[،...]سيتم تشغيل المهمة في اليوم المحدد التالي من الأسبوع

    (على سبيل المثال الخميس المقبل). إذا تم حذف التاريخ،

    يتم استخدام اليوم الحالي من الشهر.

    "فريق"اسم الملف الدفعي أو الأمر.

    أمثلة على الاستخدام:

    تناظرية لـ "المنبه" - نوافذ منبثقة تحتوي على نص يذكر المستخدم الحالي أو المحدد بالحاجة إلى تنفيذ بعض الإجراءات. لإرسال رسالة إلى المستخدم نستخدم الأداة المساعدةNET.EXE

    الساعة 13:50 إرسال net.exe * وقت تناول القهوة

    في الساعة 17:50، يرسل net.exe وقت المستخدم للعودة إلى المنزل

    في \SERVER 13:45 إرسال net.exe تحتاج إلى إعادة تشغيل الخادم

    عرض قائمة المهام المجدولة:

    حذف المهام المجدولة بالفعل:

    في 3/حذف- حذف المهمة رقم 3

    في/حذف/نعم- حذف كافة المهام

    "لوحة التحكم" - تتيح لك "المهام المجدولة" عرض وتغيير وحذف المهام التي أنشأها الفريق فيمهام.

    إيقاف وبدء خدمات النظام.

    لإيقاف خدمات Win2K/XP وبدء تشغيلها من سطر الأوامر، استخدم الأمر NET.EXE

    توقف NET.EXE< имя службы >

    بدء تشغيل NET.EXE< имя службы >

    من الممكن استخدام اسم قصير واسم كامل ("Dnscache" هو اسم قصير، و"عميل DNS" هو الاسم الكامل للخدمة). يتم وضع أسماء الخدمات التي تحتوي على مسافات بين علامتي اقتباس مزدوجتين. مثال على إعادة تشغيل خدمة "عميل DNS".

    صافي توقف "عميل DNS"

    صافي البداية "عميل DNS"

    نفس الشيء، باستخدام اسم قصير:

    صافي توقف Dnscache

    صافي بداية Dnscache

    يمكن نسخ الاسم الكامل للخدمة من "الخدمات" -< Имя службы >- "الخصائص" - "اسم العرض"

    لإدارة الخدمات، من الملائم أكثر استخدام الأداة المساعدة PsService.exe من الأدوات المساعدة PsTools، ولا تتطلب الأداة التثبيت وتعمل على أي نظام تشغيل يعمل بنظام Windows. بالإضافة إلى بدء الخدمة وإيقافها، فهي تتيح لك البحث عن خدمة معينة على أجهزة الكمبيوتر الموجودة على الشبكة المحلية، واستطلاع حالة الخدمة وتكوينها، وتغيير نوع بدء التشغيل، وإيقاف الخدمة مؤقتًا، والمتابعة، وإعادة التشغيل.

    للعمل مع خدمات النظام في نظام التشغيل Windows XP، يمكنك استخدام الأداة المساعدة sc.exe، والذي يسمح لك ليس فقط بإيقاف/بدء تشغيل الخدمة، ولكن أيضًا باستقصاء حالتها ومعلمات بدء التشغيل والتشغيل وتغيير التكوين وكذلك العمل ليس فقط مع خدمات النظام، ولكن أيضًا مع برامج التشغيل. إذا كانت لديك الحقوق، فيمكنك إدارة الخدمات ليس فقط على الجهاز المحلي، ولكن أيضًا على جهاز بعيد. أمثلة:
    توقف sc.exe DNSCache- إيقاف خدمة DNSCache على الكمبيوتر المحلي.
    استعلام sc\192.168.0.1 DNSCache- استقصاء حالة خدمة DNSCache على جهاز كمبيوتر بعنوان IP 192.168.0.1
    sc\COMP يبدأ تشغيل DNSCacheبدء تشغيل خدمة DNSCache على كمبيوتر COMP
    يمكنك الحصول على مساعدة بشأن العمل مع الأداة عن طريق إدخال:
    الشوري/؟

    عرض قيمة المتغير ERRORLEVEL.

    سيعرض هذا الملف الدفعي البسيط قيمة متغير ERRORLEVEL في سطر أوامر محدد. فهو يتحقق أولاً من وجود معلمة إدخال واحدة على الأقل، وإذا لم يتم تقديم أي منها، يتم إصدار رسالة خطأ ويتم الخروج. إذا تم تحديد معلمة واحدة على الأقل، فسيتم أخذ معلمات الإدخال كسطر أوامر وتنفيذها، ويتم إرجاع القيمة ERRORLEVEL باستخدام أمر ECHO. محتويات الملف (أسميته echoEL.bat):

    @صدى خارج
    إذا كان "%1" NEQ "" انتقل إلى PARMOK
    ECHO تحتاج إلى تعيين سطر الأوامر لتحديد ERRORLEVEL
    مخرج
    :بارموك
    %1 %2 %3 %4 %5 %6 %7 %8
    الصدى %1 %2 %3 %4 %5 %6 %7 %8 ERRORLEVEL=%ERRORLEVEL%

    أمثلة الإطلاق:
    echoEL.bat NET SHARE
    - سيتم تنفيذ أمر NET SHARE (تقديم قائمة بموارد الشبكة المشتركة) وسيتم إصدار الكود ERRORLEVEL
    echoEL.bat NET SHARE X"="C:
    - سيتم تنفيذ الأمر NET SHARE X:=C: (إنشاء مورد شبكة مشترك بالاسم X، والمسار إلى الدليل الجذر لمحرك الأقراص C :) يرجى ملاحظة أن الرمز = محاط بعلامتي اقتباس مزدوجتين.
    الخيارات المذكورة أعلاه تحدد سطر الأوامر الصحيح. لكن حاول تعيين المعلمة الخاطئة على NET.EXE أو أمر غير موجود وسترى القيمة التي سيأخذها ERRORLEVEL. ويرجى ملاحظة أن سطر الأوامر يتم تنفيذه بالفعل، وعلى سبيل المثال، سيبدأ خيار "echoEL.bat format A:" في تهيئة القرص المرن في محرك الأقراص A:.

    الحوار مع المستخدم

    للحوار مع المستخدم، يمكنك استخدام الأمر:
    تعيين /ص< имя переменной >=< текст >
    عند التنفيذ، يتم عرض رسالة نصية على الشاشة< текст >ومن المتوقع نص الرد. مثال - لنطلب كلمة مرور ونخصص قيمتها للمتغير "pset":

    تعيين /p pset="أدخل كلمة المرور -"
    كلمة مرور الصدى هي - %pset%

    عيب هذه الطريقة هو استحالة الاستمرار في تنفيذ الملف الدفعي في حالة عدم وجود استجابة من المستخدم، لذلك في كثير من الأحيان يتم استخدام برامج الطرف الثالث بدلاً من التثبيت. واحد منهم - Choice.COMتنزيل (1.7 كيلو بايت).
    يوفر خيار الاختيار للمستخدم رسالة نصية وينتظر حتى يقوم المستخدم بتحديد أحد خيارات الاستجابة المحددة (ضغطات المفاتيح على لوحة المفاتيح). بناءً على نتائج التحديد، يتم تشكيل متغير ERRORLEVEL، وقيمته تساوي الرقم الترتيبي للاختيار. افتراضيًا، هناك خياران - Y أو N. إذا كانت الإجابة Y - فحينئذٍ ERRORLEVEL=1، وإذا كانت N - فحينئذٍ ERRORLEVEL=2. يمكنك استخدام أكثر من خيارين للاختيار ومن الممكن تعيين تحديد افتراضي عندما لا يضغط المستخدم على مفتاح واحد لفترة معينة. تنسيق سطر الأوامر:

    اختيارات الاختيار] ج،نن]
    /C[:]choices - يحدد الاختيارات الصحيحة. إذا لم يتم تحديده - YN
    /N - لا تعرض خيارات التحديد.
    /S - تختلف الأحرف الصغيرة والأحرف الكبيرة.
    /T[:]c,nn - التحديد الافتراضي هو "c" بعد "nn" ثانية
    نص - إخراج سلسلة نصية كطلب

    لنقم بإنشاء ملف دفعي يوضح استخدام الاختيار. سوف يستجيب للضغط على المفاتيح "1" و"2" و3" و"0". عند الضغط على "0"، يكتمل، وعندما تضغط على الباقي، يتم إرسال رسالة إلى المستخدم. إذا لم يكن هناك شيء عند الضغط عليه خلال 10 ثوانٍ، يكتمل.

    @صدى خارج
    :خيار
    الاختيار /C:1230 /T:0.10 خيارك
    إذا %ERRORLEVEL% EQU 4 انتقل إلى الخروج
    صدى اختيارك=%ERRORLEVEL%
    اذهب إلى الاختيار
    :مخرج

    الآن، باستخدام Choice يمكنك إنشاء ملفات دفعية، يمكن للمستخدم تحديد منطقها.

    التأخير في الملفات الدفعية

    ذات مرة، بالعودة إلى DOS، تم استخدام أمر SLEEP المناسب لتنظيم الانتظار في ملف دفعي، ولكن بعد ذلك لسبب ما تم ترحيله من مجموعة أدوات تثبيت Windows القياسية إلى مجموعة الموارد الإضافية. يمكنك ببساطة نسخه من هناك إلى دليل system32 واستخدامه في ملفاتك الدفعية.

    : SLEEP N - حيث N هو عدد الثواني للتأخير.

    إذا لم تكن مجموعة الموارد في متناول اليد، فيمكنك استخدام أمر CHOISE الذي تمت مناقشته مسبقًا بدون إخراج نص ومع إنشاء استجابة تلقائية خلال nn ثانية (1-99):

    Choice.com /T:y,10 /N - تأخير لمدة 10 ثوانٍ

    تعتمد الطريقة الأكثر عالمية على اختبار اتصال واجهة الاسترجاع بالعدد المطلوب من الحزم. يتم إجراء اختبار الاتصال (Ping) لواجهة الاسترجاع (اسم المضيف - المضيف المحلي أو عنوان IP 127.0.0.1) دون نقل فعلي للبيانات، أي. على الفور تقريبًا، والفاصل الزمني بين الأصوات هو ثانية واحدة. من خلال تحديد عدد الأصوات باستخدام المفتاح "-n"، يمكنك الحصول على تأخير قدره n ثانية:

    Ping 127.0.0.1 -n 30 > nul - سيعطي تأخيرًا قدره 30 ثانية

    ابحث عن أجهزة الكمبيوتر التي تقوم بتشغيل التطبيق

    لتنفيذ هذا البرنامج النصي، استخدم الأدوات المساعدة من الحزمة أدوات(وصف قصير). لنقم بإنشاء ملف دفعي يبحث في الشبكة المحلية عن أجهزة الكمبيوتر التي تقوم بتشغيل برنامج، ويتم تحديد اسمه (الجزء الأولي من الاسم) كمعلمة عند بدء التشغيل، على سبيل المثال، game . إذا تم اكتشافه، فسيتم إرسال رسالة إلى جهاز الكمبيوتر ADMINCOMP وسيتم فرض إنهاء التطبيق المكتشف. للبحث، سوف نستخدم الأداة المساعدة Pslist.exe ونحلل رمز الإرجاع الخاص بها. تعني قيمة المتغير ERRORLEVEL التي تساوي الصفر أن الأداة المساعدة قد اكتشفت عملية على الكمبيوتر البعيد تستوفي شروط البحث. سنقوم بتعيين اسم العملية للبحث كمعلمة عند تشغيل الملف الدفعي. دعونا نعطي اسمًا للملف الدفعي الخاص بنا psl.bat. سيبدو التشغيل مع المعلمة كما يلي:
    لعبة psl.bat
    أولاً، نحتاج إلى التحقق مما إذا كانت المعلمة محددة في سطر الأوامر عند بدء التشغيل، وإذا لم يتم تحديدها، فسنصدر رسالة للمستخدم ونكمل التنفيذ. إذا تم تحديد المعلمة، فلننتقل إلى تسمية "PARMOK":
    @صدى خارج
    إذا كان "%1" NEQ "" انتقل إلى PARMOK
    ECHO تحتاج إلى تحديد اسم العملية للبحث
    مخرج
    :بارموك
    نحتاج الآن إلى ضمان الإنشاء المتسق لعناوين IP للكمبيوتر لسطر أوامر PSlist. أسهل طريقة للقيام بذلك هي عن طريق تعيين متغير بيئة مؤقت (صالح فقط لمدة تنفيذ ملف الأوامر) لقيمة المكون الثابت للعنوان (على سبيل المثال، 192.168.0.) والقيمة المحسوبة للعنوان الجزء ذو الترتيب المنخفض (على سبيل المثال، في النطاق 1-254). على سبيل المثال، سنفترض أننا بحاجة إلى فحص أجهزة الكمبيوتر الموجودة في نطاق العناوين:
    192.168.0.1 - 192.168.0.30:
    اضبط IPTMP = 192.168.0. - الجزء العلوي من العنوان
    ضبط /A IPLAST=1 - الجزء المنخفض. يعني رمز التبديل /A تعبيرًا رقميًا محسوبًا
    اضبط IPFULL=%IPTMP%%IPLAST% - قيمة عنوان IP الكامل.
    سيبدو سطر الأوامر لـ PSlist كما يلي:
    pslist\%IPFULL%%1
    الآن كل ما تبقى هو تشغيل PSlist بشكل دوري، وإضافة عنوان إلى الجزء ذو الترتيب المنخفض من العنوان في كل دورة حتى تصل قيمته إلى 30 وتحليل قيمة ERRORLEVEL بعد التنفيذ. لتحليل النتيجة، سنقوم بإجراء الانتقال باستخدام الأمر:
    الانتقال إلى النتيجة%مستوى الخطأ%
    توفير الانتقال إلى الملصق REZULT0 عند اكتشاف عملية وإلى REZULT1
    2013-08-25 14:35:35: مقالات: أمن المعلومات: البرمجيات. هل أحببتها؟
  • تتيح لك متغيرات البيئة المستخدمة في الملفات الدفعية (الأوامر) تجنب تحديد المسارات المطلقة للأدلة. على سبيل المثال، إذا لم نكن نعرف حرف محرك أقراص النظام مسبقًا، فيمكننا دائمًا استخدام المتغير %محرك النظام%، والذي يقوم بإرجاع حرف محرك الأقراص المثبت عليه نظام التشغيل. يتم أيضًا استخدام المتغيرات لتحسين التعليمات البرمجية - يمكن تعيين متغير قصير للمعلمة المتكررة بشكل متكرر (على سبيل المثال، مفتاح التسجيل). تتناول هذه المقالة بالتفصيل التقنيات المختلفة للتعامل مع المتغيرات، بالإضافة إلى طرق تغيير وإنشاء متغيرات جديدة. الآن دعونا نتحدث عن كل شيء بالترتيب.

    تصنيف متغيرات البيئة

    ملخص

    يعد Windows Command Shell (cmd.exe) أداة قوية جدًا للعمل مع النظام. يمكن للملفات الدفعية أتمتة قدر لا بأس به من المهام، ولهذا السبب يتم استخدامها غالبًا لتثبيت Windows تلقائيًا. يتيح لك الاستخدام الماهر للمتغيرات في الملفات الدفعية حل مجموعة واسعة من المشكلات. يصبح العمل مع غلاف الأوامر أكثر كفاءة وفي نفس الوقت يتم تبسيط التعليمات البرمجية للملفات الدفعية. يمكنك العثور على أمثلة أخرى لاستخدام المتغيرات على صفحات الموقع أو المنتدى. جميع الأمثلة المستخدمة في هذه المقالة مأخوذة من نصوص المشاركين، ولهم جزيل الشكر.

    المصطلح

    قذيفة القيادةهو منتج برمجي منفصل يوفر اتصالاً مباشرًا بين المستخدم ونظام التشغيل. توفر واجهة مستخدم نص سطر الأوامر بيئة لتشغيل التطبيقات والأدوات المساعدة المستندة إلى النص.

    cmd.exe- مترجم الأوامر الذي تستخدمه واجهة أوامر نظام التشغيل Windows لترجمة الأمر المُدخل إلى تنسيق يفهمه النظام.

    جلسة الفريقيمكن أن تبدأ إما عن طريق الإطلاق cmd.exeوعن طريق تشغيل ملف دفعي. بمعنى آخر، يتم إنشاء غلاف الأوامر الحالي. وبناء على ذلك، فإن الخروج من هذه الصدفة (على سبيل المثال، إنهاء ملف دفعي) يؤدي إلى إنهاء جلسة الأوامر.

    جلسة المستخدم(جلسة المستخدم) تبدأ عندما يقوم المستخدم بتسجيل الدخول (تسجيل الدخول) وتنتهي عندما يقوم المستخدم بتسجيل الخروج (تسجيل الخروج).

    في هذه المقالة:

    • تعريف المتغيرات
    • متغيرات سطر الأوامر (معلمات استدعاء ملف الخفافيش)
    • IF عامل شرطي
    • المهام
    • استخدام قيم الإرجاع (معالجة كود الخروج)

    تعريف المتغيرات

    تعيين<Имяпеременной>=<Значениепеременной>

    يعد بيان SET امتدادًا لخيارات نظام التشغيل للتعامل مع المعلمات. يحدد متغيرًا يتم استبدال قيمته باسمه كلما تم استخدام هذا الاسم بين علامات النسبة المئوية. لذلك، إذا تم توفيره (متغير تتطلبه العديد من الألعاب التي تستخدم بطاقة الصوت للكمبيوتر):

    مجموعة مكبر = A220 I5 D1 P330

    ثم عند استخدام البناء التالي في ملف دفعي:

    صدى % بلاستر %

    سيتم عرض "A220 I5 D1 P330". تسمى المتغيرات المحددة باستخدام عبارة SET متغيرات البيئة وتكون مرئية بعد التنفيذ حتى تتم إعادة تشغيل DOS (ما لم يتم تغييرها يدويًا في الذاكرة). أي أنه يمكن استخدامه من ملف دفعي أو برنامج بعد تحديده في ملف دفعي آخر. أشهرها هو متغير PATH، وهو عبارة عن مجموعة من المسارات للبحث السريع عن الملفات. تم تعيينه في ملف autoexec.bat.

    متغيرات سطر الأوامر
    (معلمات استدعاء ملف الخفافيش)

    %<цифра 0-9>

    كما هو الحال في أي لغة، في لغة الملف الدفعي، من الممكن استخدام المتغيرات المستلمة كمعلمات لملف الخفافيش.

    يمكن أن يكون هناك إجمالي 10 متغيرات مستقلة موجودة في وقت واحد. هذا صغير جدًا لكتابة البرامج المعقدة، على الرغم من أن 3-4 غالبًا ما يكون كافيًا للعمل العادي. قيمة المتغير تساوي قيمة المعلمة المقابلة من سطر الأوامر. سيحتوي المتغير %0 على اسم ملف .bat، وإذا قمت بتحديده، المسار إليه. أي إذا قمت بتشغيل ملف abc.bat بالمعلمات التالية:

    abc.bat قبل الميلاد مواطنه

    فإن المتغير %0 سيحتوي على القيمة abc.bat ، و %1 سيحتوي على القيمة a ، و %2 سيحتوي على bc ، و %3 سيحتوي على def . تُستخدم هذه الخاصية على نطاق واسع لإنشاء ملفات دفعية متعددة الاستخدامات عند التعامل مع العمليات المتكررة.

    للحصول على أكثر من 10 متغيرات من سطر الأوامر، يمكنك استخدام الأمر SHIFT.

    يسمح لك الأمر SHIFT باستخدام أكثر من 10 معلمات لسطر الأوامر، ومع ذلك، يتم فقدان المعلمات السابقة المقابلة. بمعنى آخر، يقوم أمر SHIFT بنقل كافة القيم المتغيرة خطوة واحدة إلى اليسار. أي أن المتغير %0 سيحتوي على القيمة الموجودة مسبقًا في المتغير %1، والمتغير %1 سيحتوي على قيمة المتغير %2 قبل النقل. ومع ذلك، هذه العملية لا رجعة فيها، أي أنه من المستحيل تحويل المتغيرات مرة أخرى.

    إذا عامل الشرطي

    لحسن الحظ، يدعم مترجم الأوامر cmd.exe لنظام التشغيل Windows 2000 الحديث والإصدارات الأحدث كتل الأوامر في البنيات المتفرعة، مما يلغي الحاجة إلى IFs ذات التسميات. يتم وضع كتل الأوامر بين قوسين. يبدو مثل هذا (تقليد نمط المسافة البادئة C/C++):

    إذا كان الشرط (

    أوامر Rem للفرع "ثم".

    ريم...

    ) آخر (

    أوامر Rem للفرع "آخر".

    ريم...

    مثال الاستخدام المحدد:

    @صدى خارج

    قم بتعيين BUILDMODE=%1

    إذا كان "%BUILMODE%" == "" (

    فشل الارتداد: الوسيطة مطلوبة ^(--تصحيح، --release^)

    خروج /ب1

    rem قم بإزالة كافة الواصلات من الوسيطة لتبسيط المعالجة

    تعيين BUILDMODE=%BUILDMODE:-=%

    إذا كان "%BUILDMODE%" == "تصحيح" (

    اضبط CCFLAGS=/Od /MDd /Z7

    ) آخر (

    اضبط CCFLAGS=/O2 /MD

    في رأيي، من الممكن التعايش مع هذا الأمر. ولكن، كما هو الحال دائمًا، الحياة ليست بسيطة كما تبدو. هناك مشكلة واحدة. يتم توسيع المتغيرات المستخدمة في كتلthen and else قبل بدء تنفيذ الكتل، وليس أثناء التنفيذ. في المثال الموضح، لا يسبب هذا أي مشاكل، ولكن في ما يلي سوف:

    إذا كان "%BUILDMODE%" == "تصحيح" (

    معلومات الصدى: ضبط وضع بيئة التصحيح

    اضبط OPTFLAGS=/Od

    اضبط CCFLAGS=%OPTFLAGS% /MDd /Z7

    ) آخر (

    معلومات الصدى: ضبط وضع إصدار البيئة

    اضبط OPTFLAGS=/O2

    قم بتعيين CCFLAGS=%OPTFLAGS% /MD

    المهم هو أنه في كلا الكتلتين، سيتم استبدال المتغير OPTFLAGS قبل تغييره أثناء تنفيذ تلك الكتلة. وفقًا لذلك، سيتم ملء CCFLAGS بالقيمة التي كانت لدى OPTFLAGS في وقت تنفيذ هذا الحظر.

    يتم حل هذه المشكلة باستخدام التوسع المتغير المؤجل. المتغيرات الموجودة في !...! بدلاً من %...%، سيتم الكشف عن معانيها فقط في لحظة الاستخدام المباشر. يتم تعطيل هذا الوضع بشكل افتراضي. يمكنك تمكينه إما باستخدام رمز التبديل /V:ON عند استدعاء cmd.exe، أو باستخدام الأمر:

    في نص ملف الخفافيش نفسه. تبدو الطريقة الثانية أكثر ملاءمة بالنسبة لي - ليس من الرائع أن تطلب من شخص ما تشغيل البرنامج النصي الخاص بك باستخدام معلمة معينة.

    ومع ذلك، يمكن تصحيح المثال "الخاطئ" السابق على النحو التالي:

    setlocal Enableedelayedexpansion

    إذا كان "%BUILDMODE%" == "تصحيح" (

    معلومات الصدى: إعداد بيئة وضع التصحيح

    اضبط OPTFLAGS=/Od

    قم بتعيين CCFLAGS=!OPTFLAGS! /MDd /Z7

    ) آخر (

    معلومات الصدى: إعداد بيئة وضع الإصدار

    اضبط OPTFLAGS=/O2

    قم بتعيين CCFLAGS=!OPTFLAGS! /إم دي

    الآن هذه كتلة كاملة تقريبًا إذا كان الأمر كذلك. تقريبًا، لأنه إذا واجهت قوس إغلاق في أحد أوامر الصدى، فستحتاج إلى الهروب منه باستخدام الحرف ^، وإلا فسيرتبك المحلل اللغوي...

    لكن على أية حال، هذا أفضل بكثير من العدد الهائل من العلامات والانتقالات.

    المهام

    هل من الممكن إنشاء دالة في ملف الخفافيش؟ نعم يمكنك ذلك. علاوة على ذلك، في بعض الأحيان يكون ذلك ضروريا. صحيح أنه يمكن تسمية هذه الوظائف بشروط.

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

    استدعاء: وسيطات التسمية

    يتم إرجاع الدالة بالأمر:

    الخروج /ب [رمز الإرجاع الاختياري]

    المفتاح /b مهم جدًا هنا: بدونه لن تخرج من الوظيفة، بل من البرنامج النصي بشكل عام.

    للحصول على التفاصيل، اكتب في سطر الأوامر:

    يتصل/؟

    مخرج /؟

    ومن المثير للاهتمام أن أمر الاستدعاء باستخدام بناء الجملة هذا يدعم الاستدعاءات العودية مع الإنشاء التلقائي لإطار جديد للوسائط المتغيرة %0-%9. في بعض الأحيان قد يكون هذا مفيدًا. فيما يلي مثال كلاسيكي لحساب العوامل العودية في لغة الأوامر:

    @صدى خارج

    استدعاء: المعامل %1

    صدى %النتيجة%

    مخرج

    rem دالة لحساب قيمة العامل

    تسجيل الدخول ريم:

    rem %1 الرقم الذي تريد حساب المضروب له

    إخراج العينية:

    rem %RESULT% قيمة عاملية

    :مضروب

    إذا %1 == 0 (

    تعيين النتيجة = 1

    خروج /ب

    إذا %1 == 1 (

    تعيين النتيجة = 1

    خروج /ب

    تعيين /a PARAM=%1 - 1

    استدعاء: عامل٪ PARAM٪

    تعيين /a النتيجة=%1 * %RESULT%

    خروج /ب

    مثال على العمل:

    > فاكتوري بات 10

    3628800

    استخدام قيم الإرجاع
    (معالجة رمز خروج البرنامج)

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

    كيف يمكن للملف الدفعي معرفة رمز الخروج للبرنامج المنفذ؟ يتم توفير متغير المفتاح ERRORLEVEL لهذا الغرض.

    مثال على ملف دفعي به مستويات خطأ:

    @صدى خارج

    REM قم بتشغيل البرنامج prg1.exe

    PRG1.EXE

    تحليل رمز إكمال REM

    في حالة عدم العثور على مستوى الخطأ 2، انتقل إلى الملف

    إذا كان مستوى الخطأ 1، فانتقل إلى خطأ الكتابة

    إذا كان مستوى الخطأ 0، فانتقل إلى EXITOK

    انتقل إلى Onexit

    :لم يتم العثور على الملف

    خطأ في الصدى! لم يتم العثور على الملف!

    انتقل إلى Onexit

    :خطأ الكتابة

    خطأ في تسجيل ECHO!

    انتقل إلى Onexit

    :إكزيتوك

    ECHO تم إكمال البرنامج بنجاح.

    انتقل إلى Onexit

    :ونيكست

    يرجى ملاحظة أن تحليل رمز الإنهاء لا يبدأ من الصفر، بل من أقصى قيمة ممكنة. والحقيقة هي أن مثل هذا الفحص يعني: "إذا كان مستوى الخطأ أكبر من أو يساوي القيمة، فعندئذ ...". أي أننا إذا تحققنا بدءًا من الصفر، فإن أي قيمة ستكون صحيحة في السطر الأول، وهذا غير صحيح.

    وهذا هو الخطأ الأكثر شيوعا في هذا النوع من البرامج.

    في بعض الأحيان يكون من الضروري تشكيل متغير التاريخ والوقتالخامس كمد/باتنصوص شبابيكبالطريقة التي نحتاجها، وليس بالطريقة التي يقدمها لنا نظام التشغيل.

    على سبيل المثال، لإضافة هذه البيانات إلى ملف سجل، لتسجيل وقت أو تاريخ حدث ما، قم بإنشاء ملف باسم يجب أن يحتوي على بيانات التاريخ أو الوقت (اليوم، الشهر، السنة، الساعة، الدقائق، الثواني، المللي ثانية. ) أنت لا تعرف أبدا، ما هي مهامنا ... دعونا نستخدم خيالنا :)

    في المثال التالي نرى تقسيم المتغيرات حسب الأنماط التي نحتاجها.

    ح- الساعة مكونة من رقمين (أي سيتم إعطاء الساعة بالشكل التالي - 01، 02، ...، 09، ... ، 12، ... 24)

    م - دقيقة 2 حرف

    ق - ثواني 2 علامات

    مللي ثانية - رقمين بالمللي ثانية، لسبب ما من 0 إلى 99

    dd - علامات اليوم الثاني

    مم - شهر 2 حرف

    yyyy - السنة 4 أرقام

    مثال على استخدام المتغيرات ٪تاريخ٪و ٪وقت٪في البرامج النصية كمد / مضربشبابيك:

    @صدى خارج
    تعيين h=%TIME:~0.2%
    تعيين م =٪ الوقت: ~ 3.2٪
    مجموعة s=%TIME:~6.2%
    تعيين مللي ثانية =٪ الوقت: ~ 9.2٪
    تعيين curtime=%h%:%m%:%s%:%ms%
    تعيين dd=%DATE:~0.2%
    تعيين مم=%التاريخ:~3.2%
    تعيين yyyy=%DATE:~6.4%
    تعيين curdate=%dd%-%mm%-%yyyy%
    تعيين curdatetime=%curdate% %curtime%

    صدى الوقت الحالي هو %curdatetime%

    في بعض إصدارات Windows، يختلف تنسيق إصدار التاريخ والوقت، لذلك يمكن أن يعمل هذا البرنامج النصي تمامًا كما نحتاج.

    من الناحية النظرية، يمكنك أخذ أجزاء من أي متغيرات بطريقة مماثلة، النقطة المهمة هي أن التنسيق هنا هو كما يلي:

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

    وبالتالي، اتضح أنه يمكننا أن نأخذ احتياجاتنا أي جزء من أي متغير بيئة Windows متاح لنا.

    أعرف المتغيرات التالية التي يمكننا الحصول على قيمها:

    اسم
    وصف
    ملف تعريف جميع المستخدمين إرجاع موضع ملف التعريف "جميع المستخدمين".
    معلومات التطبيق إرجاع الموقع الافتراضي لبيانات التطبيق.
    قرص مضغوط يحدد مسار المجلد الحالي. مطابق لأمر القرص المضغوط بدون وسيطات.
    كمدكمدلين الأمر الدقيق المستخدم لبدء cmd.exe الحالي.
    CMDEXTVERSION إصدار ملحقات معالج الأوامر الحالية.
    ملفات البرنامج المشترك موقع دليل "الملفات العامة" (عادةً %ProgramFiles%\Common Files)
    اسم الحاسوب اسم الحاسوب
    كومسبيك المسار إلى شل قابل للتنفيذ
    تاريخ إرجاع التاريخ الحالي. يستخدم نفس تنسيق الأمر date /t. تم إنشاؤه بواسطة الأمر Cmd.exe.
    مستوى الخطأ إرجاع رمز الخطأ لآخر أمر تم استخدامه. تشير القيمة غير الصفرية عادةً إلى وجود خطأ.
    هوم درايف إرجاع اسم محرك محطة العمل المحلي المرتبط بالدليل الرئيسي للمستخدم. يتم التعيين بناءً على موقع الدليل الرئيسي. يتم تحديد الدليل الرئيسي للمستخدم في الأداة الإضافية "المستخدمون المحليون والمجموعات المحلية".
    هومباث إرجاع المسار الكامل إلى الدليل الرئيسي للمستخدم. يتم التعيين بناءً على موقع الدليل الرئيسي. يتم تحديد الدليل الرئيسي للمستخدم في الأداة الإضافية "المستخدمون المحليون والمجموعات المحلية".
    مشاركة منزلية إرجاع مسار الشبكة إلى الدليل الرئيسي المشترك للمستخدم. يتم التعيين بناءً على موقع الدليل الرئيسي. يتم تحديد الدليل الرئيسي للمستخدم في الأداة الإضافية "المستخدمون المحليون والمجموعات المحلية".
    خادم تسجيل الدخول اسم وحدة تحكم المجال المستخدمة لتخويل المستخدم الحالي
    NUMBER_OF_PROCESSORS عدد المعالجات في النظام
    نظام التشغيل اسم نظام التشغيل. يظهر نظاما التشغيل Windows XP وWindows 2000 كـ Windows_NT.
    طريق يحدد مسار البحث عن الملفات القابلة للتنفيذ.
    باثيكست إرجاع قائمة بامتدادات الملفات التي تعتبر قابلة للتنفيذ بواسطة نظام التشغيل.
    PROCESSOR_ARCHITECTURE بنية المعالج
    PROCESSOR_IDENTIFIER وصف المعالج
    PROCESSOR_LEVEL رقم طراز المعالج
    PROCESSOR_REVISION مراجعة المعالج
    ملفات البرنامج المسار إلى مجلد ملفات البرنامج
    اِسْتَدْعَى إرجاع خيارات سطر الأوامر للمترجم الحالي. تم إنشاؤه بواسطة الأمر Cmd.exe.
    عشوائي رقم عشري عشوائي من 0 إلى 32767. تم إنشاؤه بواسطة Cmd.exe
    اسم الجلسة نوع الجلسة. القيمة الافتراضية هي "وحدة التحكم"
    محرك النظام القرص الذي يوجد عليه المجلد الجذر لنظام التشغيل Windows
    جذر النظام مسار مجلد جذر ويندوز
    درجة الحرارة أو TMP إرجاع المجلدات المؤقتة الافتراضية التي تستخدمها التطبيقات التي يمكن للمستخدمين الذين قاموا بتسجيل الدخول الوصول إليها. تتطلب بعض التطبيقات المتغير TEMP، والبعض الآخر يتطلب المتغير TMP. من المحتمل أن يشير كل من TEMP وTMP إلى أدلة مختلفة، لكن عادةً ما يكونان متماثلين.
    وقت إرجاع الوقت الحالي. يستخدم نفس تنسيق الأمر time /t. تم إنشاؤه بواسطة الأمر Cmd.exe.
    مجال المستخدم اسم المجال الذي ينتمي إليه المستخدم الحالي
    اسم المستخدم اسم المستخدم الحالي
    ملف تعريفي للمستخدم المسار إلى الملف الشخصي للمستخدم الحالي
    Windir الدليل الذي تم تثبيت Windows عليه

       الفريق تعيينيستخدم لعرض وتغيير متغيرات البيئة في سطر أوامر Windows. متغيرات البيئة هي متغيرات تميز قيمها المقبولة البيئة التي يعمل فيها البرنامج الحالي - مسارات ملفات النظام، ومعلومات الأجهزة، وأدلة المستخدم، وما إلى ذلك. يتم إنشاء قيم متغيرات البيئة عند تشغيل Windows أو قيام المستخدم بتسجيل الدخول إلى النظام أو عند تشغيل العمليات الفردية أو استخدام الأمر تعيين. لعرض القيمة التي يفترضها متغير معين، يمكنك استخدام الأمر:

    تعيين متغير
    اختر الطريق- عرض قيمة المتغير طريق
    لإنشاء متغير جديد أو تغيير قيمة متغير موجود، استخدم الأمر:

    تعيين متغير = سلسلة

    عامل- اسم متغير البيئة.
    خط- سلسلة أحرف مخصصة للمتغير المحدد.

    SET MyName=Vasya- تعيين قيمة المتغير اسمي

    تعيين المسار=C:\progs;%path%- تغيير قيمة المتغير طريقعن طريق الإضافة إلى بداية السطر ج:\البرامج

    القيمة المقبولة من قبل المتغير متاحة للمعالجة في ملفات الأوامر باستخدام اسمها المضمن في علامات النسبة المئوية - % . على سبيل المثال، أمر لعرض النص على شاشة ECHO في النموذج:

    تاريخ الصدى- سيتم عرض كلمة "التاريخ" والأمر
    إيكو %تاريخ%سيتم عرض قيمة المتغير تاريخ، أي. التاريخ الحالي بتنسيق نظام التشغيل.

    فريق تعيينيتم استخدام بدون معلمات لعرض القيم الحالية لمتغيرات البيئة.

    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\Usr\AppData\Roaming
    CommonProgramFiles=C:\ملفات البرنامج\الملفات المشتركة
    اسم الكمبيوتر=TEST7
    ComSpec=C:\windows\system32\cmd.exe
    FP_NO_HOST_CHECK=NO
    هوم درايف = ج:
    HOMEPATH=\Users\Usr
    LOCALAPPDATA=C:\Users\Usr\AppData\Local
    خادم تسجيل الدخول=\\TEST7
    NUMBER_OF_PROCESSORS=2
    نظام التشغيل=Windows_NT
    المسار=C:\windows\system32;C:\windows;
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS; .VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=x86
    PROCESSOR_IDENTIFIER=x86 Family 15 Model 3 Stepping 4، GenueIntel
    PROCESSOR_LEVEL=15
    PROCESSOR_REVISION=0304
    ProgramData=C:\ProgramData
    ProgramFiles=C:\ملفات البرنامج
    موجه=$P$G
    PSModulePath=C:\windows\system32\Windows PowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    محرك النظام=C:
    SystemRoot=C:\windows
    TEMP=C:\Users\Usr\AppData\Local\Temp
    TMP=C:\Users\Usr\AppData\Local\Temp
    مجال المستخدم=test7
    اسم المستخدم=المستخدم
    USERPROFILE=C:\Users\Usr
    Windir=C:\windows

    بالإضافة إلى المتغيرات المعروضة في القائمة عند استدعاء أمر SET، هناك متغيرات أخرى تتغير قيمها ديناميكيًا:

    %القرص المضغوط%- يأخذ قيمة الدليل الحالي.
    ٪تاريخ٪- يأخذ قيمة التاريخ الحالي.
    ٪وقت٪- يأخذ قيمة الوقت الحالي.
    ٪عشوائي٪- قيمة الرقم العشوائي في النطاق بين 0 و 32767.
    مستوى الخطأ%%- القيمة الحالية لـ ERRORLEVEL، وهو متغير خاص يستخدم كمؤشر لنتيجة تنفيذ البرنامج.
    %CMDEXTVERSION%قام CMD.EXE بتوسيع قيمة إصدار معالجة الأمر.
    %كمدكمدلين%- يمتد إلى سطر الأوامر الأصلي الذي يسمى Shell.

    إذا قمت بتحديد جزء فقط من الاسم عند استدعاء أمر SET، فسيتم عرض قائمة بالمتغيرات التي تبدأ أسماؤها بالسلسلة المحددة. على سبيل المثال:

    سيت يو- سيتم عرض قيم كافة المتغيرات التي تبدأ أسماؤها بالحرف "U".

    يدعم أمر SET مفتاحين إضافيين:

    تعيين / تعبير

    تعيين /P متغير =

    يحدد رمز التبديل /A أن السلسلة الموجودة على يمين علامة التساوي هي تعبير رقمي يتم تقييم قيمته. محرك التعبير بسيط للغاية ويدعم العمليات التالية، المدرجة بترتيب تنازلي للأولوية:

    عند استخدام أي عوامل تشغيل منطقية أو ثنائية، يجب عليك وضع سلسلة التعبير بين علامات اقتباس. يتم التعامل مع أي سلاسل غير رقمية في التعبير كأسماء لمتغيرات البيئة التي يتم تحويل قيمها إلى شكل رقمي قبل الاستخدام. إذا لم يتم تعريف متغير بالاسم المحدد في النظام، فسيتم استبدال قيمة فارغة بدلاً من ذلك. يتيح لك ذلك إجراء عمليات حسابية على قيم متغيرات البيئة دون الحاجة إلى إدخال علامات % للحصول على القيم. إذا تم استدعاء SET /A من سطر الأوامر بدلاً من ملف دفعي، فإنه يطبع القيمة النهائية للتعبير. يجب أن يظهر اسم متغير البيئة على يسار أي مشغل مهمة. يتم التعامل مع القيم الرقمية على أنها عشرية ما لم تكن مسبوقة ببادئة:

    0x- للأرقام السداسية العشرية
    0 - للأرقام الثمانية.

    مثال على استخدام البادئات:

    ضبط /A REZ=0xA+012
    صدى %REZ%

    في هذا الملف الدفعي، قيمة المتغير هي REZيتم حسابه عن طريق إضافة الرقم 10 الممثل بالنظام الست عشري (0xA) والرقم 10 الممثل بالنظام الثماني (012).

    يسمح لك رمز التبديل /P بتعيين قيمة متغير لسلسلة الإدخال التي أدخلها المستخدم. يعرض موجه السلسلة المحدد قبل قراءة السلسلة المدخلة. قد يكون موجه موجه السلسلة فارغًا. يتيح لك هذا المفتاح تنظيم حوار مع المستخدم في ملف دفعي:

    @صدى خارج
    SET /P NAME=أدخل اسم المستخدم:
    SET /P pass=أدخل كلمة المرور:
    اسم مستخدم ECHO - %NAME%، كلمة المرور - %PASS%

    في الملفات الدفعية، غالبًا ما تحتاج إلى العمل مع جزء من القيمة المأخوذة بواسطة متغير، والتي تستخدم لها قيمًا بديلة:

    المتغير: السلسلة 1 = السلسلة 2- يستبدل في القيمة المستلمة للمتغير خط 1على خط 2

    يستخدم الملف الدفعي التالي حرف النقطة للشرطة في القيمة المتغيرة المقابلة للتاريخ الحالي:

    @صدى خارج
    تعيين TM=%DATE%
    تاريخ الصدى 1 = %tm%
    ضبط tm=%التاريخ:.=-%
    تاريخ الصدى 2 = %tm%

    لتسليط الضوء على جزء من القيمة التي يأخذها المتغير، يتم استخدام البناء التالي:

    المتغير:~x,y- أين س- عدد الأحرف التي تم تخطيها من بداية السطر و ذ- عدد الأحرف المستخدمة كقيمة المتغير.

    يستخدم المثال التالي عرض الوقت الحالي بدون الثواني وكسور الثواني (أول 5 أحرف فقط من القيمة القياسية لمتغير TIME):

    @صدى خارج
    تعيين تم=%TIME%
    وقت الصدى 1 = %tm%
    ضبط tm=%الوقت:~0.5%
    وقت الصدى 2 = %tm%

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

    @صدى خارج
    تعيين تم=%TIME%
    وقت الصدى 1 = %tm%
    ضبط tm=%الوقت:~0.-6%
    وقت الصدى 2 = %tm%

    من الممكن استخدام عدد الفجوات غير محدد، ويتم استخدام رقم سالب، وستكون القيمة المستلمة جزءًا من المتغير من نهاية السطر:

    المسار %:~-10%- سيتم استخراج آخر 10 أحرف من متغير PATH

    يمكنك حذف القيمة الخالية مع الحفاظ على تنسيق الاستبدال:

    المسار %:~0.-2%مقابل المسار %:~,-2%

    عند استخدام متغيرات البيئة في ملفات الأوامر، هناك قيود معينة مرتبطة بحقيقة أن القيمة المخصصة تظل دون تغيير عند تعديلها ضمن مجموعة أوامر محددة بين قوسين، على سبيل المثال في الأوامر لوأو ل. لتجاوز هذا القيد، قم بتشغيل معالج الأوامر باستخدام المعلمة /V:ON واستخدم علامات التعجب بدلاً من علامات النسبة المئوية للحصول على القيمة المقبولة بواسطة المتغير. بالإضافة إلى ذلك، من الممكن استخدام التشغيل القياسي لمعالج الأوامر، ولكن مع التنشيط المحلي لهذا الوضع باستخدام الأمر:

    يظهر الاختلاف في نتائج استخدام القيم المتغيرة بشكل واضح من خلال الملف الدفعي التالي:


    @صدى خارج
    تعيين VAR = قبل
    إذا كان "%VAR%" == "قبل" (
    تعيين VAR = بعد
    إذا كان "!VAR!" == "بعد"echo مع علامة النسبة المئوية=%VAR%، مع علامة الاستفهام=!VAR!

    فريق تعيين VAR = بعديتم تنفيذه داخل روتين فرعي محدد بين قوسين، وإذا تمت إزالة الأمر Setlocal EnableDelayedExpansionأو لا تستخدم للحصول على قيمة المتغير حكم الفيديو المساعدعلامات التعجب، ستبقى قيمتها هي القديمة (ما تم ضبطه قبل الدخول إلى الروتين الفرعي). تحدث مشكلة مشابهة عندما يتم تغيير قيمة متغير داخل حلقة الأوامر. ل. على سبيل المثال، للحصول على قائمة بالملفات الموجودة في الدليل الحالي، لن يعمل ملف دفعي مثل هذا:

    قائمة المجموعة=
    بالنسبة لـ %%i في (*) قم بتعيين LIST=%LIST% %%i
    صدى %LIST%

    قيمة متغيرة قائمةلن يتم تغييرها داخل الحلقة. ولكي يحدث ذلك، يجب تعديل الملف الدفعي على النحو التالي:

    Setlocal EnableDelayedExpansion
    قائمة المجموعة=
    بالنسبة لـ %%i في (*) قم بتعيين LIST=!LIST! ٪٪أنا
    صدى %LIST%

    والآن قيمة المتغير قائمةداخل حلقة لسوف تتغير، مع الأخذ بالتتابع قيم أسماء الملفات مفصولة بمسافات ( تعيين القائمة=!القائمة! ٪٪أنا)