Esistono diversi modi per commentare in un file batch
1) Utilizzo di rem
Questo è il modo ufficiale. A quanto pare, l'esecuzione richiede più tempo di ::, sebbene apparentemente interrompa l'analisi in anticipo, prima che i caret vengano elaborati. L'espansione percentuale avviene prima di rem e ::viene identificata, quindi un uso percentuale errato, ad esempio %~, causerà errori se sono presenti percentuali. Sicuro da usare ovunque nei blocchi di codice.
2) Utilizzo delle etichette :, ::o :;etc.
Infatti :: comment, ": comment" è un nome di etichetta non valido perché inizia con un carattere non valido. Va bene usare i due punti nel mezzo di un'etichetta però. Se uno spazio inizia all'inizio dell'etichetta, viene rimosso : labeldiventa :label. Se uno spazio o due punti appare nel mezzo dell'etichetta, il resto del nome non viene interpretato nel senso che se ci sono due etichette :f:ooe :f rr, entrambi verranno interpretati come :fe verrà saltato solo l'etichetta definita successivamente nel file. Il resto dell'etichetta è effettivamente un commento. Ci sono più alternative a ::, elencate qui . Non si può mai gotoo di un'etichetta. e non funzionerà.call::foogoto :foogoto ::foo
Funzionano bene al di fuori dei blocchi di codice ma dopo un'etichetta in un blocco di codice, non valida o meno, deve esserci una riga di comando valida. :: commentè davvero un altro comando valido. Lo interpreta come un comando e non come un'etichetta; il comando ha la precedenza. Qual è il comando per cd al ::volume, che funzionerà se lo hai eseguito subst :: C:\, altrimenti otterrai un errore nel trovare il volume. Ecco perché :;è probabilmente migliore perché non può essere interpretato in questo modo, e quindi viene interpretato come un'etichetta, che funge da comando valido. Questo non è ricorsivo, cioè l'etichetta successiva non ha bisogno di un comando dopo di essa. Ecco perché arrivano in due.
È necessario fornire un comando valido dopo l'etichetta, ad es echo something. Un'etichetta in un blocco di codice deve avere almeno un comando valido, quindi le righe si presentano in coppie di due. Verrà visualizzato un )errore imprevisto se nella riga successiva è presente uno spazio o una parentesi di chiusura. Se è presente uno spazio tra le due ::righe, verrà visualizzato un errore di sintassi non valido.
È inoltre possibile utilizzare l'operatore del cursore nel ::commento in questo modo:
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
Ma hai bisogno del trailing :;per il motivo sopra indicato.
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
Va bene finché c'è un numero pari. Questo è senza dubbio il modo migliore per commentare - con 4 righe e :;. Con :;te non ricevi alcun errore che deve essere eliminato usando 2> nulo subst :: C:\. È possibile utilizzare subst :: C:\per far scomparire l'errore del volume non trovato, ma significa che è necessario inserire anche C: nel codice per evitare che la directory di lavoro diventi ::\.
Per commentare alla fine di una riga puoi fare
command &::o command & rem comment, ma deve esserci ancora un numero pari, in questo modo:
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
Il primo echo hello & :;yesha un comando valido sulla riga successiva ma il secondo & :;yesno, quindi ha bisogno di uno cioè il :;.
3) Utilizzo di una variabile d'ambiente non valida
%= comment =%. In un file batch, le variabili di ambiente non definite vengono rimosse dallo script. Questo rende possibile usarli alla fine di una riga senza usare &. È personalizzato utilizzare una variabile di ambiente non valida, ovvero una contenente un segno di uguale. Gli extra uguali non sono richiesti ma lo rendono simmetrico. Inoltre, i nomi delle variabili che iniziano con "=" sono riservati per variabili dinamiche non documentate. Quelle variabili dinamiche non finiscono mai con "=", quindi usando "=" sia all'inizio che alla fine del commento, non c'è possibilità di scontro tra nomi. Il commento non può contenere %o :.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) Come comando, reindirizzando stderr a nul
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) Alla fine di un file, tutto dopo una parentesi non chiusa è un commento
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment