لدي ملف دفعي يقوم بتشغيل عدة برامج نصية بيثون تقوم بتعديلات الجدول.
أريد أن أجعل المستخدمين يعلقون على البرامج النصية 1-2 بيثون التي لا يريدون تشغيلها ، بدلاً من إزالتها من الملف الدفعي (حتى يعلم المستخدم التالي أن هذه البرامج النصية موجودة كخيارات!)
أريد أيضًا إضافة تعليقات لجذب انتباههم على وجه التحديد إلى المتغيرات التي يحتاجون إلى تحديثها في ملف الدُفعات قبل تشغيلها. أرى أنه يمكنني استخدام REM
. ولكن يبدو أن هذا هو أكثر من أجل تحديث المستخدم مع التقدم بعد تشغيله.
هل هناك بناء جملة لإضافة تعليق بشكل أكثر ملاءمة؟
الأمر rem
مخصص للتعليقات. لا يتم تحديث أي شخص بطبيعته بعد تشغيل البرنامج النصي. قد يستخدمه بعض مؤلفي البرامج النصية بهذه الطريقة بدلاً من echo
، لأنه/افتراضيًا ، سيقوم مترجم الدُفعات يطبع كل أمر قبل معالجته. نظرًا لأن الأوامر rem
لا تفعل أي شيء ، فمن الآمن طباعتها بدون آثار جانبية. لتجنب طباعة أمر ، قم بادئة ذلك بـ @
، أو لتطبيق هذا الإعداد في جميع أنحاء البرنامج ، قم بتشغيل @echo off
. (رمز echo off
هو تجنب طباعة أوامر أخرى ؛ @
هو تجنب الطباعة ذلك الأمر قبل بدء إعداد الارتداد.)
لذلك ، في ملف الدُفعات الخاص بك ، يمكنك استخدام هذا:
@echo off
REM To skip the following Python commands, put "REM" before them:
python foo.py
python bar.py
::
أو REM
:: commenttttttttttt
REM commenttttttttttt
&
:your commands here & :: commenttttttttttt
IF/ELSE
، حلقات FOR
، الخ ...) استخدمREM
لأن ::
يعطي خطأ.::
قد يفشل داخل setlocal ENABLEDELAYEDEXPANSION
لا ، تستخدم ملفات الدُفعات القديمة العادية REM
كتعليق. ECHO
هو الأمر الذي يطبع شيئًا ما على الشاشة.
إلى أقسام "التعليق" من الملف ، يمكنك استخدام GOTO
. مثال على كل هذه الأوامر/التقنيات:
REM it starts here the section below can be safely erased once the file is customised
ECHO Hey you need to edit this file before running it! Check the instructions inside
ECHO Now press ctrl-c to interrupt execution or enter to continue
PAUSE
REM erase the section above once you have customised the file
python executed1.py
ECHO Skipping some stuff now
GOTO End
python skipped1.py
python skipped2.py
:END
python executed2.py
ماذا استطيع قوله؟ الملفات الدفعية هي من بقايا المرات الطويلة التي انقضت ، فهي قبيحة وقبيحة.
يمكنك قراءة المزيد على هذا الموقع .
تحرير: تعديل المثال قليلاً ليحتوي على العناصر التي تبحث عنها على ما يبدو.
من الأفضل استخدام :: بدلاً من REM في الأيام التي لم تكن فيها أجهزة الكمبيوتر سريعة للغاية. تتم قراءة السطر REM'ed ثم ingnged. :: 'ed line يتم تجاهله على طول الطريق. هذا يمكن أن يسرع رمزك في "الأيام الخوالي". علاوة على ذلك أكثر بعد REM أنت بحاجة إلى مساحة ، بعد :: أنت لا.
وكما قيل في التعليق الأول: يمكنك إضافة معلومات إلى أي سطر تشعر بالحاجة إليه
SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS
أما بالنسبة لتخطي الأجزاء. قد يكون وضع REM أمام كل سطر وقتًا طويلاً. كما ذكرنا ، فإن استخدام GOTO لتخطي الأجزاء يعد وسيلة سهلة لتخطي أجزاء كبيرة من التعليمات البرمجية. تأكد من تعيين: LABEL عند النقطة التي ترغب في متابعة الرمز فيها.
SOME CODE
GOTO LABEL ::REM OUT THIS LINE TO EXECUTE THE CODE BETWEEN THIS GOTO AND :LABEL
SOME CODE TO SKIP
.
LAST LINE OF CODE TO SKIP
:LABEL
CODE TO EXECUTE
إذا كان هناك عدد كبير من الأسطر التي تريد التعليق عليها ، فسيكون من الأفضل إذا أمكنك تقديم تعليقات متعددة الأسطر بدلاً من التعليق على كل سطر.
لا تحتوي لغة الدُفعات على كتل تعليقات ، على الرغم من وجود طرق لإنجاز التأثير.
GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1
يمكنك استخدام GOTO
Label و: Label لإجراء تعليقات الكتلة.
أو ، إذا ظهر مقطع التعليق في نهاية الملف الدفعي ، فيمكنك كتابة EXIT
في نهاية التعليمات البرمجية ثم أي عدد من التعليقات لفهمك.
@ECHO OFF
REM Do something
•
•
REM End of code; use GOTO:EOF instead of EXIT for Windows NT and later
EXIT
Start of comment block at end of batch file
This line is comment.
And so is this line.
And this one...
& :: comment
color C & :: set red font color
echo IMPORTANT INFORMATION
color & :: reset the color to default
تفسير:
&
يفصل بين أمرين ، لذلك في هذه الحالة color C
هو الأمر الأول و :: set red font color
هو الثاني.
هذا البيان مع التعليق يبدو بشكل حدسي:
goto error1 :: handling the error
ولكنه ليس استخدامًا صالحًا للتعليق. إنه يعمل فقط لأن goto
يتجاهل كل الحجج السابقة الأولى. البرهان سهل ، هذا goto
لن يفشل أيضًا:
goto error1 handling the error
لكن محاولة مماثلة
color 17 :: grey on blue
فشل في تنفيذ الأمر بسبب 4 وسائط غير معروفة للأمر color
: ::
، grey
، on
، blue
.
سوف تعمل فقط على النحو التالي:
color 17 & :: grey on blue
لذا فإن علامة الضم أمر لا مفر منه.
يمكنك التعليق على شيء ما باستخدام ::
أو REM
:
your commands here
:: commenttttttttttt
أو
your commands here
REM commenttttttttttt
للقيام بذلك على نفس سطر الأمر ، يجب عليك إضافة علامة ضم:
your commands here & :: commenttttttttttt
أو
your commands here & REM commenttttttttttt
::
في المنطق المتداخل (IF-ELSE
، FOR
loops ، إلخ ...) إلى حدوث خطأ. في هذه الحالات ، استخدمREM
بدلاً من ذلك.هذا موضوع قديم وأود أن أضيف فهمي هنا لتوسيع معرفة هذا الموضوع المثير للاهتمام.
الفرق الرئيسي بين REM و :: هو:
REM هي أمر في حد ذاته ، بينما :: is NOT.
يمكننا أن نتعامل مع :: كرمز رمزي أنه بمجرد أن يواجه محلل CMD أول مساحة غير فارغة في السطر هو هذا الرمز المميز ، فإنه سيتخطى السطر بالكامل ويقرأ السطر التالي. لهذا السبب يجب أن يتبع REM مساحة فارغة على الأقل لتتمكن من العمل كتعليق للخط ، بينما :: لا يحتاج إلى أي مساحة فارغة خلفه.
أن REM هو أمر يمكن فهمه في حد ذاته من خلال ما يلي لـ بناء الجملة
بناء الجملة الأساسي هو كما يلي
FOR %v in (set) DO <Command> [command param]
هنا <Command>
يمكن أن يكون أي أمر صالح حتى نتمكن من كتابة سطر الأوامر صالح التالي كما rem
هو أمر
FOR %i in (1,2,3) DO rem echo %i
ومع ذلك ، لا يمكننا كتابة السطر التالي لأن ::
ليس أمرًا
FOR %i in (1,2,3) DO :: echo %i