Es gibt verschiedene Möglichkeiten, Kommentare in einer Batch-Datei abzugeben
1) Mit rem
Dies ist der offizielle Weg. Die Ausführung dauert anscheinend länger als ::
, obwohl die Analyse anscheinend vorzeitig beendet wird, bevor die Carets verarbeitet werden. Die prozentuale Erweiterung erfolgt vor rem und ::
wird identifiziert, sodass eine falsche prozentuale Nutzung %~
Fehler verursacht, wenn Prozente vorhanden sind. Sicher überall in Codeblöcken zu verwenden.
2) Unter Verwendung von Etiketten :
, ::
oder :;
usw.
Denn :: comment
': comment' ist ein ungültiger Markenname, da er mit einem ungültigen Zeichen beginnt . Es ist jedoch in Ordnung, einen Doppelpunkt in der Mitte eines Etiketts zu verwenden. Wenn ein Leerzeichen am Anfang des Etiketts beginnt, wird es entfernt : label
wird :label
. Wenn ein Raum oder ein Doppelpunkt in der Mitte des Etiketts erscheint, wird der Rest des Namens nicht interpretiert was bedeutet , dass , wenn es zwei Etiketten :f:oo
und :f rr
wird sowohl als interpretiert werden :f
und nur das später definierte Etikett in der Datei wird übersprungen werden. Der Rest des Etiketts ist praktisch ein Kommentar. Es gibt mehrere Alternativen zu den hier::
aufgeführten . Sie können nie oder ein Etikett. und wird nicht funktionieren.goto
call
::foo
goto :foo
goto ::foo
Sie funktionieren auch außerhalb von Codeblöcken einwandfrei, aber nach einer ungültigen oder nicht ungültigen Beschriftung in einem Codeblock muss eine gültige Befehlszeile vorhanden sein. :: comment
ist in der Tat ein weiterer gültiger Befehl. Es interpretiert es als Befehl und nicht als Bezeichnung. Der Befehl hat Vorrang. Welches ist der Befehl, um auf das ::
Volume zu cd , der funktioniert, wenn Sie ausgeführt haben subst :: C:\
, sonst erhalten Sie einen kann den Volume-Fehler nicht finden. Das ist der Grund, warum :;
es wohl besser ist, weil es nicht auf diese Weise interpretiert werden kann und daher stattdessen als Bezeichnung interpretiert wird, die als gültiger Befehl dient. Dies ist nicht rekursiv, dh das nächste Label benötigt keinen Befehl danach. Deshalb kommen sie zu zweit.
Sie müssen nach dem Etikett einen gültigen Befehl eingeben, z echo something
. Eine Beschriftung in einem Codeblock muss mindestens einen gültigen Befehl enthalten, daher werden die Zeilen paarweise angezeigt. Sie erhalten einen unerwarteten )
Fehler, wenn in der nächsten Zeile ein Leerzeichen oder eine schließende Klammer steht. Wenn zwischen den beiden ::
Zeilen ein Leerzeichen steht , wird ein ungültiger Syntaxfehler angezeigt.
Sie können den Caret-Operator im ::
Kommentar auch wie folgt verwenden:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Sie benötigen jedoch das Trailing :;
aus dem oben genannten Grund.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
Es ist in Ordnung, solange es eine gerade Zahl gibt. Dies ist zweifellos der beste Weg, um zu kommentieren - mit 4 Zeilen und :;
. Mit erhalten :;
Sie keine Fehler, die mit 2> nul
oder unterdrückt werden müssen subst :: C:\
. Sie können verwenden subst :: C:\
, um den nicht gefundenen Volume-Fehler zu beseitigen. Dies bedeutet jedoch, dass Sie auch C: in den Code einfügen müssen, um zu verhindern, dass Ihr Arbeitsverzeichnis wird ::\
.
Um am Ende einer Zeile zu kommentieren, können Sie command &::
oder command & rem comment
, aber es muss immer noch eine gerade Zahl geben, wie folgt
:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
Der erste echo hello & :;yes
hat einen gültigen Befehl in der nächsten Zeile, der zweite & :;yes
jedoch nicht. Daher benötigt er einen, dh den :;
.
3) Verwenden einer ungültigen Umgebungsvariablen
%= comment =%
. In einer Batchdatei werden Umgebungsvariablen, die nicht definiert sind, aus dem Skript entfernt. Dies ermöglicht es, sie am Ende einer Zeile ohne Verwendung zu verwenden &
. Es ist üblich, eine ungültige Umgebungsvariable zu verwenden, dh eine, die ein Gleichheitszeichen enthält. Die zusätzliche Gleichheit ist nicht erforderlich, lässt sie jedoch symmetrisch aussehen. Variablennamen, die mit "=" beginnen, sind auch für nicht dokumentierte dynamische Variablen reserviert. Diese dynamischen Variablen enden nie mit "=". Wenn Sie also sowohl am Anfang als auch am Ende des Kommentars ein "=" verwenden, besteht keine Möglichkeit eines Namenskonflikts. Der Kommentar darf %
oder nicht enthalten :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) Als Befehl stderr nach nul umleiten
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) Am Ende einer Datei ist alles nach einer nicht geschlossenen Klammer ein Kommentar
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment