Wat betekent “@” in batchscripts van Windows

Ik zag dat @in dergelijke contexten wordt gebruikt:

@echo off
@echo start eclipse.exe

Wat betekent @hier?


Antwoord 1, autoriteit 100%

Het betekent dat u de betreffende opdracht niet uitvoert. Vergelijk de volgende twee batchbestanden:

@echo foo

en

echo foo

De eerste heeft alleen fooals uitvoer terwijl de laatste afdrukt

H:\Stuff>echo foo 
foo

(hier tenminste). Zoals te zien is, is het commando dat wordt uitgevoerd ook zichtbaar.

echo offschakelt dit uit voor het volledige batchbestand. De echo off-aanroep zelf zou echter nog steeds zichtbaar zijn. Daarom zie je @echo offaan het begin van batchbestanden. Schakel commando echo uit enherhaal het commando niet om het uit te zetten.

Het verwijderen van die regel (of er commentaar op geven) is vaak een handig hulpmiddel bij het opsporen van fouten in complexere batchbestanden, omdat u kunt zien wat er wordt uitgevoerd voorafgaand aan een foutmelding.


Antwoord 2, autoriteit 14%

Het betekent “de opdracht niet herhalen naar de standaarduitvoer”.

Vrij vreemd,

echo off

stuurt echo offnaar de uitgang! Dus,

@echo off

zet dit automatische echo-gedrag uit – en stopt het ook voor alle toekomstige commando’s.

Bron: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true


Antwoord 3, autoriteit 7%

Standaard geeft een batchbestand zijn opdracht weer terwijl het wordt uitgevoerd. Het doel van deze eerste opdracht die @echo uitis, is om deze weergave uit te schakelen. Het commando “echo off” schakelt de weergave voor het hele script uit, behalve het commando “echo off” zelf. Het “at”-teken “@” ervoor zorgt ervoor dat het commando ook op zichzelf van toepassing is.


Antwoord 4, autoriteit 6%

De @schakelt echo uit voor dat ene commando. Zonder dit zou de regel echo start eclipse.exezowel de bedoelde start eclipse.exeende echo start eclipse.exeregel.

De echo offschakelt de standaardopdracht echo uit.

Dus @echo offschakelt commando-echo’s stilletjes uit, en alleen de uitvoer waarvan de batchauteur bedoeld is om te worden geschreven, is daadwerkelijk geschreven.


Antwoord 5, autoriteit 5%

Het erft de betekenis van DOS. @:

In DOS-versie 3.3 en hoger wordt de echo van een batchopdracht verborgen. Elke uitvoer die door de opdracht wordt gegenereerd, wordt herhaald.

Zonder dit zou je commando-echo uit kunnen zetten met behulp van het echo offcommando, maar dat commando zou eerst worden herhaald.


Antwoord 6, autoriteit 2%

Een ander handig moment om @ op te nemen, is wanneer u FORin de opdrachtregel gebruikt. Bijvoorbeeld:

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

Vorige regel toont voor elk bestand: de opdrachtprompt, de opdracht ECHOen het resultaat van de opdracht ECHO. Op deze manier:

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

Alleen het resultaat van het ECHOcommando wordt getoond.


Antwoord 7, autoriteit 2%

In batchbestand:

1 @echo off(solo)=>voer niets uit

2 echo uit(solo)=> de “echo off” verschijnt in de opdrachtregel

3 echo uit(dan echo iets) =>

4 @echo off(echo iets dan)=>

Zie, echo off(solo), betekent geen uitvoer in de opdrachtregel, maar wordt zelf weergegeven;
@echo off(solo), betekent geen uitvoer in de opdrachtregel, noch zelf;


Antwoord 8

je kunt @ in een ‘scriptBlock’ als volgt opnemen:

@(
  echo don't echoed
  hostname
)
echo echoed

en vooral niet doen 🙂

for %%a in ("@") do %%~aecho %%~a

Other episodes