Qual è il segno di chiocciola (@) in un file batch e cosa fa?


101

Chi ha familiarità con lo scripting batch di Windows / DOS riconoscerà questa riga:

@echo off

Per molti, molti giorni, sono stato contento del sentimento che @è come echo offdovrebbe essere scritto all'inizio del batch e basta.

Tuttavia, di recente mi sono imbattuto in una linea come questa:

@php foo bar

e un'altra riga come questa:

@call \\network\folder\batch.bat

Questo ha rafforzato il mio sospetto che @abbia qualcosa di più del semplice echocambio di modalità. Tuttavia @non è elencato in Windows XP: Riferimento della riga di comando AZ che cerco di utilizzare come riferimento e quindi non sono sicuro di come trovare informazioni definitive su questo:

Qual è il @batch di accesso, qual è la terminologia e cosa fa?


3
Niente da aggiungere alla risposta di ismail. Ma solo per riferimenti futuri, la risposta è inclusa nella documentazione indicata "Riferimento della riga di comando AZ" nella Remarkssezione del echocomando.
MC ND

2
@MCND vedo, grazie! Non sapevo che fosse specifico dell'eco ... beh, immagino di aver frainteso l'importanza del echobatch. Ecco il collegamento a echo # remarks .
n611x007

2
L'ho sentito chiamare "squelch", ma ho solo prove aneddotiche per questo.
RustyTheBoyRobot

Risposte:


152

Al simbolo - @

Il @ symboldice al processore di comandi ad essere meno dettagliato; per mostrare solo l'output del comando senza mostrare che è in esecuzione o eventuali prompt associati all'esecuzione. Quando viene utilizzato viene anteposto all'inizio del comando, non è necessario lasciare uno spazio tra la "@" e il comando.

Quando "echo" è impostato su "off" non è necessario utilizzare "@" perché l'impostazione di "echo" su "off" fa sì che questo comportamento diventi automatico. "Echo" è normalmente impostato su "on" per impostazione predefinita quando inizia l'esecuzione di uno script. Questo è il motivo per cui "@echo off" è comunemente usato, per disattivare l'eco senza mostrare l'atto di disattivarlo.

echo verbose
@echo less verbose
pause

3
Accettato questo per la spiegazione in loco di senza ... alcun prompt associato all'esecuzione e per dire cose come (verbosità) del processore dei comandi e parlare dello spazio. :) Bello anche il lotto di prova!
n611x007

7
Apparentemente questo è ovvio per tutti, ma non sapevo che funziona solo se eseguito da un .batfile, cioè non funziona direttamente dalla riga di comando.
doABarrelRoll721

1
When "echo" is set to "off" it is not necessary to use "@" because setting "echo" to "off" causes this behavior to become automatic. Questo è vero. Ho anche scoperto che questo può causare effetti collaterali indesiderati. Ad esempio, l'utilizzo di @copyun clip < file.txt & pausecomando per qualche motivo fa sì che i miei appunti copino il testo 1 file copied.
DGO

La cosa brutta è che non posso leggere il documento ufficiale!
Robert,

-1

Non solo il simbolo "a" posto all'inizio nasconde il comando, ma può anche essere usato per aggiungere argomenti del comando memorizzati in un file di testo. La sintassi è exe @ comandi (se ricordo bene)


3
No, se provi a eseguire qualcosa del genere myExe@myCommandsfallisce conis not recognized as an internal or external command
jeb

@jeb, cosa succede quando metti degli spazi attorno al @simbolo? Non riesco a farlo funzionare, ma l'ho visto usato nei file batch ...
jdk1.0
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.