it-swarm.com.de

Wie kann man in einem Batch/cmd "einen Kommentar abgeben"?

Ich habe eine Batchdatei, die mehrere Python-Skripts ausführt, die Tabellenänderungen vornehmen. 

  1. Ich möchte, dass Benutzer die 1-2 Python-Skripts auskommentieren, die sie nicht ausführen möchten, anstatt sie aus der Batchdatei zu entfernen (damit der nächste Benutzer diese Skripts als Optionen kennt!)

  2. Ich möchte auch Kommentare hinzufügen, um sie auf die Variablen aufmerksam zu machen, die sie vor dem Ausführen in der Batch-Datei aktualisieren müssen. Ich sehe, dass ich REM verwenden kann. Es sieht jedoch so aus, als wäre dies mehr für die Aktualisierung des Benutzers mit dem Fortschritt, nachdem er ausgeführt wurde. 

Gibt es eine Syntax für das richtige Hinzufügen eines Kommentars?

712
user1397044

Der Befehl rem ist in der Tat für Kommentare. Nach dem Ausführen des Skripts werden keine Benutzer von Natur aus aktualisiert. Einige Skriptautoren verwenden sie möglicherweise anstelle von echo auf diese Weise, da der Batch-Interpreter standardmäßig jeden Befehl vor der Verarbeitung druckt. Da rem-Befehle nichts tun, können sie ohne Nebeneffekte gedruckt werden. Um zu vermeiden, dass ein Befehl gedruckt wird, voranstellen Sie ihn mit @, oder führen Sie @echo off aus, um diese Einstellung im gesamten Programm anzuwenden. (Es ist echo off, um das Drucken weiterer Befehle zu vermeiden; der @ soll das Drucken von diesem Befehl verhindern, bevor die Echoeinstellung wirksam wird.)

In Ihrer Batch-Datei könnten Sie also Folgendes verwenden:

@echo off
REM To skip the following Python commands, put "REM" before them:
python foo.py
python bar.py
723
Rob Kennedy

:: oder REM

::   commenttttttttttt
REM  commenttttttttttt

ABER (wie die Leute gesagt haben):

  • Wenn Sie Inline verwenden, müssen Sie das Zeichen & hinzufügen:
    your commands here & :: commenttttttttttt
  • Verwenden Sie in verschachtelter Logik (IF/ELSE, FOR-Schleifen usw.)REM, da :: einen Fehler gibt.
  • :: kann innerhalb von setlocal ENABLEDELAYEDEXPANSION fehlschlagen 
787
T.Todua

Nein, normale alte Batchdateien verwenden REM als Kommentar. ECHO ist der Befehl, der etwas auf dem Bildschirm druckt.

Zum Auskommentieren von Abschnitten der Datei können Sie GOTO verwenden. Ein Beispiel für alle diese Befehle/Techniken:

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

Was kann ich sagen? Batch-Dateien sind ein Relikt aus längst vergangenen Zeiten, sie sind klobig und hässlich.

Sie können mehr auf dieser Website lesen.

BEARBEITEN: Das Beispiel wurde etwas geändert, damit es die Elemente enthält, nach denen Sie scheinbar gesucht haben.

42
fvu

Das :: anstelle von REM wurde vorzugsweise an den Tagen verwendet, an denen Computer nicht sehr schnell waren. Die REM-Zeile wird gelesen und anschließend ignoriert. :: 'ed line werden den ganzen Weg ignoriert. Dies könnte Ihren Code in "den alten Tagen" beschleunigen. Weiterhin benötigen Sie nach einem REM ein Leerzeichen, nach :: Sie nicht.

Und wie im ersten Kommentar gesagt: Sie können jeder Zeile, die Sie für notwendig erachten, Informationen hinzufügen

SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS

Was das Überspringen von Teilen betrifft . Das Setzen von REM vor jeder Zeile kann recht zeitaufwändig sein . Wie bereits erwähnt, können Sie mit GOTO zum Überspringen von Teilen große Teile des Codes überspringen. Stellen Sie sicher, dass Sie ein: LABEL an der Stelle setzen, an der der Code fortgesetzt werden soll.

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

Mehrzeilige Kommentare

Wenn Sie eine große Anzahl von Zeilen auskommentieren möchten, ist es besser, wenn Sie mehrzeilige Kommentare machen können, als jede Zeile auskommentieren zu müssen. 

Die Batch-Sprache hat keine Kommentarblöcke, obwohl es Möglichkeiten gibt, den Effekt zu erzielen.

GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1

Sie können GOTO Label und: Label für Blockkommentare verwenden.

Oder: Wenn der Kommentarblock am Ende der Batchdatei angezeigt wird, können Sie am Ende des Codes EXIT und dann eine beliebige Anzahl von Kommentaren zum Verständnis eingeben.

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

Kommentarquelle

22
Somnath Muluk

Kommentare in die gleiche Zeile mit Befehlen setzen: use & :: comment

color C          & :: set red font color
echo IMPORTANT INFORMATION
color            & :: reset the color to default

Erklärung:

& trennt zwei Befehle , in diesem Fall ist color C der erste Befehl und :: set red font color der zweite.


Wichtig:

Diese Aussage mit Kommentar sieht intuitiv korrekt aus:

goto error1         :: handling the error

aber es ist keine gültige Verwendung des Kommentars. Es funktioniert nur, weil goto alle Argumente nach dem ersten ignoriert. Der Beweis ist einfach, das goto wird auch nicht fehlschlagen:

goto error1 handling the error

Aber ähnlicher Versuch

color 17            :: grey on blue

die Ausführung des Befehls schlägt aufgrund von 4 Argumenten fehl, die dem Befehl color nicht bekannt sind: ::, grey, on, blue.

Es funktioniert nur als:

color 17     &      :: grey on blue

Das kaufmännische Und ist daher unvermeidlich.

12
miroxlav

Sie können etwas mit :: oder REM auskommentieren:

your commands here
:: commenttttttttttt

oder

your commands here
REM  commenttttttttttt

Um dies in der gleichen Zeile wie ein Befehl auszuführen, müssen Sie ein kaufmännisches Und hinzufügen:

your commands here      & ::  commenttttttttttt

oder

your commands here      & REM  commenttttttttttt

Hinweis:

  • Die Verwendung von::in verschachtelter Logik (IF-ELSE, FOR-Schleifen usw.) verursacht einen Fehler. Verwenden Sie in diesen Fällen stattdessenREM.
2
Pikamander2

Dies ist ein altes Thema, und ich möchte hier mein Verständnis hinzufügen, um das Wissen über dieses interessante Thema zu erweitern. 

Der Hauptunterschied zwischen REM und :: ist:

REM ist selbst ein Befehl, während :: NICHT ist. 

Wir können :: als Token behandeln, das, sobald der CMD-Parser auf das erste leere Feld in einer Zeile trifft, dieses :: Token ist, die gesamte Zeile übersprungen und die nächste Zeile gelesen wird. Aus diesem Grund sollte auf REM mindestens ein Leerzeichen folgen, um als Kommentar für die Zeile fungieren zu können, während :: dahinter kein Leerzeichen benötigt.

Dass REM selbst ein Befehl ist, kann am besten aus der folgenden FÜR -Syntax verstanden werden

Die grundlegende FOR-Syntax lautet wie folgt

FOR %v in (set) DO <Command> [command param] 

hier kann <Command> ein beliebiger gültiger Befehl sein So können wir die folgende gültige Befehlszeile schreiben, da rem ein Befehl ist

FOR %i in (1,2,3) DO rem echo %i

Wir können jedoch die folgende Zeile NICHT schreiben, da :: kein Befehl ist

FOR %i in (1,2,3) DO :: echo %i
0
jyao