Cosa significa "@" negli script batch di Windows


132

Ho visto che @viene utilizzato in tali contesti:

@echo off

@echo start eclipse.exe

Cosa @significa qui?

Risposte:


197

Significa non emettere il rispettivo comando. Confronta i seguenti due file batch:

@echo foo

e

echo foo

Il primo ha solo foocome output mentre il secondo stampa

H:\Stuff>echo foo 
foo

(almeno qui). Come si può vedere, anche il comando eseguito è visibile.

echo offlo disattiverà per il file batch completo. Tuttavia, la echo offchiamata stessa sarebbe comunque visibile. Ecco perché vedi @echo offl'inizio dei file batch. Disattiva l'eco del comando e non fare l'eco del comando disattivandolo.

Rimuovere quella linea (o commentarla) è spesso un utile strumento di debug in file batch più complessi, poiché puoi vedere cosa viene eseguito prima di un messaggio di errore.



14

I @disabili eco per quello comando. Senza di essa, la echo start eclipse.exelinea stamperebbe sia la linea prevista start eclipse.exe che la echo start eclipse.exelinea.

I echo offSpegne il comando eco da-default.

Quindi @echo offdisattiva silenziosamente l'eco dei comandi e in realtà viene scritto solo l'output dell'autore batch che si intende scrivere.


11

Eredita il significato da DOS. @ :

In DOS versione 3.3 e successive, nasconde l'eco di un comando batch. Qualsiasi output generato dal comando viene ripetuto.

Senza di essa, è possibile disattivare l'eco dei comandi utilizzando il echo offcomando, ma tale comando verrebbe prima eco.


Il link ora è rotto
ojchase il

8

Per impostazione predefinita, un file batch visualizzerà il suo comando durante l'esecuzione. Lo scopo di questo primo comando che @echo off è di disattivare questo display. Il comando "echo off" disattiva la visualizzazione per l'intero script, ad eccezione del comando "echo off" stesso. Il segno "at" @ "davanti fa sì che il comando si applichi anche a se stesso.


3
Non riesco a vedere più o migliori informazioni nel tuo post, come negli altri post di 5 anni.
jeb,

5

Un altro momento utile per includere @ è quando si utilizza FORnella riga di comando. Per esempio:

FOR %F IN (*.*) DO ECHO %F

La riga precedente mostra per ogni file : il prompt dei comandi, il ECHOcomando e il risultato del ECHOcomando. Per di qua:

FOR %F IN (*.*) DO @ECHO %F

ECHOViene mostrato solo il risultato del comando.


@PsychoData: È divertente che tu abbia annullato il voto l'unica risposta che fornisce informazioni utili aggiuntive rispetto alle altre 4 risposte che, nel frattempo, hanno già risposto alla domanda nello stesso modo ...
Aacini

6
Ho annullato il voto perché non era una risposta alla sua domanda. Non dare nemmeno una spiegazione di cosa fa @. Se hai fantastici esempi di utilizzo, fantastico, ma non è ancora una risposta alla sua domanda. Potresti anche non sapere che ho anche annullato la risposta con la spiegazione della scommessa su cosa fa e da dove viene. Non ho semplicemente votato per nessun motivo. La tua "risposta" non è una risposta. È un'affermazione in qualche modo correlata.
PsychoData,

2

puoi includere @ in un 'scriptBlock' come questo:

@(
  echo don't echoed
  hostname
)
echo echoed

e soprattutto non farlo :)

for %%a in ("@") do %%~aecho %%~a
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.