it-swarm.asia

كيفية "تعليق التدريجي" (إضافة تعليق) في مجموعة/كمد؟

لدي ملف دفعي يقوم بتشغيل عدة برامج نصية بيثون تقوم بتعديلات الجدول.

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

  2. أريد أيضًا إضافة تعليقات لجذب انتباههم على وجه التحديد إلى المتغيرات التي يحتاجون إلى تحديثها في ملف الدُفعات قبل تشغيلها. أرى أنه يمكنني استخدام REM. ولكن يبدو أن هذا هو أكثر من أجل تحديث المستخدم مع التقدم بعد تشغيله.

هل هناك بناء جملة لإضافة تعليق بشكل أكثر ملاءمة؟

745
user1397044

الأمر 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
750
Rob Kennedy

:: أو REM

::   commenttttttttttt
REM  commenttttttttttt

لكن (كما لاحظ الناس):

  • إذا كنت تستخدم السطر المضمن ، فيجب إضافة حرف &:
    your commands here & :: commenttttttttttt
  • داخل المنطق المتداخل (IF/ELSE ، حلقات FOR ، الخ ...) استخدمREMلأن :: يعطي خطأ.
  • :: قد يفشل داخل setlocal ENABLEDELAYEDEXPANSION
817
T.Todua

لا ، تستخدم ملفات الدُفعات القديمة العادية 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

ماذا استطيع قوله؟ الملفات الدفعية هي من بقايا المرات الطويلة التي انقضت ، فهي قبيحة وقبيحة.

يمكنك قراءة المزيد على هذا الموقع .

تحرير: تعديل المثال قليلاً ليحتوي على العناصر التي تبحث عنها على ما يبدو.

42
fvu

من الأفضل استخدام :: بدلاً من 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
28
Kees

تعليقات متعددة الخطوط

إذا كان هناك عدد كبير من الأسطر التي تريد التعليق عليها ، فسيكون من الأفضل إذا أمكنك تقديم تعليقات متعددة الأسطر بدلاً من التعليق على كل سطر.

لا تحتوي لغة الدُفعات على كتل تعليقات ، على الرغم من وجود طرق لإنجاز التأثير.

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...

تعليقات المصدر

22
Somnath Muluk

وضع التعليقات على نفس السطر مع الأوامر: استخدم & :: 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

لذا فإن علامة الضم أمر لا مفر منه.

12
miroxlav

يمكنك التعليق على شيء ما باستخدام :: أو REM:

your commands here
:: commenttttttttttt

أو

your commands here
REM  commenttttttttttt

للقيام بذلك على نفس سطر الأمر ، يجب عليك إضافة علامة ضم:

your commands here      & ::  commenttttttttttt

أو

your commands here      & REM  commenttttttttttt

ملحوظة:

  • سيؤدي استخدام::في المنطق المتداخل (IF-ELSE ، FOR loops ، إلخ ...) إلى حدوث خطأ. في هذه الحالات ، استخدمREMبدلاً من ذلك.
3
Pikamander2

هذا موضوع قديم وأود أن أضيف فهمي هنا لتوسيع معرفة هذا الموضوع المثير للاهتمام.

الفرق الرئيسي بين 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
0
jyao