Come posso fare commenti al prompt dei comandi di Windows?


Risposte:


90

REM è il modo standard:

REM this is a comment

È inoltre possibile utilizzare la convenzione a due punti comunemente presente nei file batch:

:: another comment

Un singolo punto seguito da una stringa è un'etichetta, ma un doppio punto e tutto ciò che segue viene silenziosamente ignorato. Si potrebbe sostenere che questo modulo è più leggibile del REMcomando.

Si noti che entrambi questi metodi funzionano solo all'inizio di una riga. Se si desidera aggiungere un commento a un comando, è possibile utilizzarli con il carattere di concatenazione del comando ( &), in questo modo:

dir & REM a comment
dir &:: another one

2
Grazie. Funziona solo se è la prima cosa che si incontra, invece di fare qualcosa del genere dir :: comment?
Andrew Grimm,

1
Innanzitutto un link utile . Quindi, i commenti a due punti non sembrano funzionare all'interno di blocchi di codice (codice tra parentesi, come in if/ forloop).
x-yuri,

@efotinis, in remrealtà è un comando? Non ::sarebbe meglio perché esso stesso viene ignorato?
Pacerier,

@Pacerier, yes REMè un comando effettivo, ma è incorporato in CMD.EXE, quindi dovrebbe essere piuttosto efficiente. D'altra parte, ::potrebbe essere più veloce, poiché ignora tutto fino alla fine della riga (ad es. Non controlla i comandi concatenati utilizzando &).
efotinis,

2
Tieni presente che l'utilizzo ::può rompere il tuo codice in alcuni casi, ad esempio essere l'ultima riga di un blocco di codice.
bryc,

16

Prefissi il tuo commento con la parola REM.

REM This is a comment.

Ma se vuoi che il tuo commento ti venga stampato di nuovo, dovresti fargli eco:

echo This is a comment you'll see.

Accettando di lavorare, ma sarei stato solo leggermente più sorpreso se la risposta fosse BTW, come in lolcode.com/specs/1.2#comments
Andrew Grimm,

5

Il REMcomando osserva solo (ad esempio dire qualcosa come un commento) che la riga viene eseguita. Tuttavia, se @echo offnon si trova nel file batch, quella riga continuerà a essere visualizzata sullo schermo.

Per evitare che queste linee vengano mostrate puoi fare una delle tre cose.

  1. Aggiungi @echo off al file batch :
    se vuoi nascondere tutti i comandi e le righe REM aggiungi @echo off come prima riga nel file batch.
  2. Modificare REM in @REM :
    se si desidera visualizzare i comandi quando viene eseguito il file batch, ma si desidera comunque nascondere le righe REM digitare @REM anziché REM.
  3. Usa: :( ovvero etichetta non valida ) invece di REM :
    Infine, usare :: come comando di osservazione invece di REM impedisce anche l'eco della riga osservata.

fonte


2

Credo che la risposta fornita da Bernhard sia errata.

Almeno attraverso la vittoria 7,

rem comment

in un file batch verrà stampato nell'output. Per sopprimere la stampa, utilizzare

@ rem comment

o

@rem comment

Lo stesso vale per altri comandi, che per impostazione predefinita vengono ripetuti nella console.


Il comando REM commentnon stamperà alcun output sullo schermo. Per una dimostrazione dal vivo, apri un prompt dei comandi ed esegui, echo commentquindi esegui il comando rem comment. Si noti che il echocomando stampa l'output sullo schermo mentre il remcomando no.
Dico Reintegrare Monica il

Uso sempre @REM commentnei miei script batch per evitare che vengano visualizzati. Avrei suggerito di modificare la risposta di Bernards per includere l'uso di @ prima di REM negli script batch per evitare che venisse visualizzato piuttosto che pubblicare una risposta completamente nuova.
Robin Hood,

3
@RobinHood, i file batch eseguono l'eco di tutti i comandi per impostazione predefinita (per scopi di debug), ecco perché è consuetudine avviarli @ECHO OFF & SETLOCAL .... In questo modo non è necessario anteporre @a tutte le linee e si può facilmente passare a ECHO ONquando qualcosa va storto e è necessario eseguire alcuni test.
efotinis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.