1126 Stimmen

Wie kann man in einem Batch/Cmd "auskommentieren" (Kommentar hinzufügen)?

Ich habe eine Batch-Datei, die mehrere Python-Skripte ausführt, die Tabellenmodifikationen durchführen.

  1. Ich möchte, dass Benutzer die 1-2 Python-Skripte auskommentieren, die sie nicht ausführen möchten, anstatt sie aus der Batch-Datei zu entfernen (damit der nächste Benutzer weiß, dass diese Skripte als Optionen existieren!)

  2. Ich möchte auch Kommentare hinzufügen, um sie speziell auf die Variablen aufmerksam zu machen, die sie in der Batch-Datei aktualisieren müssen, bevor sie sie ausführen. Ich sehe, dass ich REM verwenden kann. Aber es sieht so aus, als ob das eher dafür gedacht ist, dem Benutzer den Fortschritt nach dem Ausführen mitzuteilen.

Gibt es eine Syntax für das Hinzufügen eines Kommentars auf angemessenere Weise?

8 Stimmen

Siehe auch ausgezeichnete Antworten hier stackoverflow.com/q/12407800/1011025

3 Stimmen

Du kannst den Befehl Rem Sth verwenden oder dieses Zeichen verwenden: :: Sth

0 Stimmen

Ich ziehe es vor, zu verwenden: - REM für Kommentare - &REM für Inline-Kommentare

1257voto

T.Todua Punkte 48569

Verwenden Sie :: oder REM

::   Kommentarrrrrrrrrrr
REM  Kommentarrrrrrrrrrr

ABER (wie von Personen bemerkt):

  • wenn sie nicht am Anfang der Zeile stehen, fügen Sie das Zeichen & hinzu:
    Ihre Befehle hier & :: Kommentarrrrrrrrrrr
  • In verschachtelten Teilen (IF/ELSE, FOR-Schleifen usw.) sollte :: durch eine normale Zeile gefolgt werden, da es sonst einen Fehler gibt (verwenden Sie dort REM).
  • :: kann auch innerhalb von setlocal ENABLEDELAYEDEXPANSION scheitern.

85 Stimmen

Das Doppelpunktzeichen :: ist der sauberste .bat-Kommentar, der existiert. Und es kann am Anfang oder in der Mitte einer Zeile verwendet werden!

11 Stimmen

Funktionierte nicht für mich, wenn es inline gemacht wurde. cd "C:\Ordner" :: das wirft einen Syntaxfehler

3 Stimmen

Auch fehlgeschlagen bei git add :: blah this is not a comment mit "fatal: pathspec 'blah' hat keine übereinstimmenden Dateien"

987voto

Rob Kennedy Punkte 158781

Der rem Befehl dient tatsächlich zum Kommentieren. Er aktualisiert niemanden von selbst, nachdem das Skript ausgeführt wurde. Einige Skriptautoren könnten ihn jedoch auf diese Weise anstelle von echo verwenden, da der Batch-Interpreter standardmäßig jeden Befehl vor seiner Verarbeitung ausgibt. Da rem Befehle nichts machen, ist es sicher, sie ohne Nebenwirkungen auszugeben. Um einen Befehl nicht auszugeben, füge @ davor ein, oder um diese Einstellung im gesamten Programm anzuwenden, führe @echo off aus. (Es ist echo off, um das Ausgeben weiterer Befehle zu vermeiden; das @ dient dazu, das Ausgeben dieses Befehls vor dem Inkrafttreten der echo-Einstellung zu verhindern.)

Also könntest du in deiner Batch-Datei das hier verwenden:

@echo off
REM Um die folgenden Python-Befehle zu überspringen, füge "REM" vor sie ein:
python foo.py
python bar.py

449 Stimmen

Sie können auch zwei Doppelpunkte "::" verwenden. Es ist eine von zwei Möglichkeiten, Anmerkungen in die Batch-Datei hinzuzufügen, ohne dass diese Zeile angezeigt oder ausgeführt wird, wenn die Batch-Datei ausgeführt wird. Im Gegensatz zu REM wird diese Zeile nicht angezeigt, unabhängig davon, ob ECHO off in der Batch-Datei steht.

12 Stimmen

@Brent81 Ich denke, das sollte die richtige Antwort sein. Wenn Sie die Syntaxhervorhebung verwenden, wird der REM-Befehl nicht tatsächlich als "auskommentiert" hervorgehoben.

19 Stimmen

Das Doppelpunkt ist ein "ungültiges Label"; hier ist ein Artikel, der es erklärt, und warum seine Leistung möglicherweise besser ist als REM (insbesondere auf Disketten!), und es funktioniert nicht in eingerückten Codeblöcken (nur auf dem ersten Zeichen): robvanderwoude.com/comments.php

57voto

fvu Punkte 31678

Nein, einfache alte Stapeldateien verwenden REM als Kommentar. ECHO ist der Befehl, der etwas auf dem Bildschirm ausgibt.

Um Abschnitte der Datei "auszukommentieren", könnten Sie GOTO verwenden. Ein Beispiel für all diese Befehle/Techniken:

REM Hier beginnt der Abschnitt unten kann sicher gelöscht werden, sobald die Datei angepasst ist
ECHO Hey, du musst diese Datei bearbeiten, bevor du sie ausführst! Überprüfe die Anweisungen im Inneren
ECHO Drücke jetzt Strg-C, um die Ausführung zu unterbrechen, oder Eingabe, um fortzufahren
PAUSE
REM Löschen Sie den obenstehenden Abschnitt, sobald Sie die Datei angepasst haben
python ausgeführt1.py
ECHO Jetzt überspringen wir ein paar Dinge
GOTO Ende
python übersprungen1.py
python übersprungen2.py
:Ende
python ausgeführt2.py

Was soll ich sagen? Stapeldateien sind ein Relikt aus längst vergangenen Zeiten, sie sind klobig und hässlich.

Sie können mehr auf dieser Website lesen.

EDIT: Habe das Beispiel etwas modifiziert, damit es die Elemente enthält, nach denen Sie offensichtlich suchen.

37voto

Kees Punkte 571

Statt REM wurde damals bevorzugt :: verwendet, als Computer noch nicht sehr schnell waren. REM-Zeilen werden gelesen und dann ignoriert. :: - Zeilen werden vollständig ignoriert. Das konnte deinen Code in "alten Zeiten" beschleunigen. Außerdem brauchst du nach einem REM ein Leerzeichen, nach einem :: nicht.

Und wie im ersten Kommentar erwähnt: Du kannst Informationen zu jeder Zeile hinzufügen, wenn du das Bedürfnis dazu hast

SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Macht YYYYMMTT-HHMMSS

Was das Überspringen von Teilen betrifft. Das Hinzufügen von REM vor jeder Zeile kann ziemlich zeitaufwändig sein. Wie bereits erwähnt, ist die Verwendung von GOTO zum Überspringen von Teilen eine einfache Möglichkeit, große Teile des Codes zu überspringen. Stelle sicher, dass du ein :LABEL an der Stelle setzt, an der der Code fortgesetzt werden soll.

ETWAS CODE

GOTO LABEL  ::REME DIESE ZEILE AUS, UM DEN CODE ZWISCHEN DIESEM GOTO UND :LABEL AUSZUFÜHREN

ETWAS CODE ZUM ÜBERSPRINGEN
.
LETZTE ZEILE DES ZU ÜBERSPRINGENDEN CODES

:LABEL
CODE ZUM AUSFÜHREN

1 Stimmen

Wie kann eine Doppelpunktzeile ignoriert werden, ohne gelesen zu werden? Muss der Interpreter nicht zuerst die Zeile lesen, bevor er sie als Doppelpunktzeile erkennt?

2 Stimmen

@RobKennedy, wie ich die Antwort lese, liest sie nichts mehr nach den ::, wo alles nach REM gelesen wird.

6 Stimmen

Wenn der Befehlsinterpreter das Lesen stoppt, @James, würde er nie mehr von der Datei ausführen. Offensichtlich muss er weiterlesen, um herauszufinden, wo der Kommentar endet und wo die nächste Zeile der Datei beginnt. Er muss das sowohl mit :: als auch mit rem tun.

31voto

Somnath Muluk Punkte 51007

Mehrzeilige Kommentare

Wenn Sie eine große Anzahl von Zeilen auskommentieren möchten, ist es besser, wenn Sie mehrzeilige Kommentare erstellen, anstatt jede Zeile auszukommentieren.

Sehen Sie sich diesen Beitrag von Rob van der Woude zu Kommentarblöcken an:

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

GOTO EndComment1
Diese Zeile ist ein Kommentar.
Und diese Zeile auch.
Und diese hier...
:EndComment1

Sie können GOTO Label und :Label verwenden, um Blockkommentare zu erstellen.

Oder, Wenn der Kommentarblock am Ende der Batch-Datei erscheint, können Sie EXIT am Ende des Codes schreiben und dann beliebig viele Kommentare für Ihr Verständnis.

@ECHO OFF
REM Etwas tun
  •
  •
REM Ende des Codes; verwenden Sie GOTO:EOF anstelle von EXIT für Windows NT und später
EXIT

Beginn des Kommentarblocks am Ende der Batch-Datei
Diese Zeile ist ein Kommentar.
Und diese Zeile auch.
Und diese hier...

0 Stimmen

Dies wird häufig in Hybrid-Batch- & VBS/JS-Skripten verwendet, obwohl sie if anstelle von goto verwendet haben stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X