Co to jest znak at (@) w pliku wsadowym i do czego służy?

101

Osoba zdalnie zaznajomiona ze skryptami wsadowymi systemu Windows / DOS rozpozna tę linię:

@echo off

Przez wiele, wiele dni cieszyłem się uczuciem, że @tak echo offma być napisane u góry wsadu i to wszystko.

Jednak ostatnio natknąłem się na taką linię:

@php foo bar

i kolejna taka linia :

@call \\network\folder\batch.bat

To wzmocniło moje podejrzenie, że chodzi @o coś więcej niż tylko echoprzełączanie trybu. Jednak @nie jest wymieniony w Windows XP: odwołanie do wiersza poleceń AZ, którego próbuję użyć jako odniesienia, dlatego nie jestem pewien, jak znaleźć ostateczne informacje na ten temat:

Co to jest @znak wsadowy, jaka jest terminologia i do czego służy ?

n611x007
źródło
3
Nie ma nic do dodania do odpowiedzi ismail. Ale tylko dla przyszłych odniesień odpowiedź jest zawarta we wskazanej dokumentacji „Odwołania do wiersza poleceń AZ” w Remarkssekcji dotyczącej echopolecenia.
MC ND
2
@MCND Rozumiem, dzięki! Nie wiedziałem, że to specyficzne dla echa ... cóż, chyba źle zrozumiałem znaczenie echopartii. Oto link do uwag echo # .
n611x007
2
Słyszałem, że nazywa się to „blokadą szumów”, ale mam na to tylko anegdotyczne dowody.
RustyTheBoyRobot

Odpowiedzi:

152

Przy symbolu - @

@ symbolInformuje procesor polecenia do mniej komunikatów; aby pokazać tylko wyjście polecenia bez pokazywania jego wykonywania ani żadnych podpowiedzi związanych z wykonaniem. Kiedy jest używany, jest dodawany na początku polecenia, nie jest konieczne pozostawianie spacji między „@” a poleceniem.

Kiedy "echo" jest ustawione na "wyłączone", nie ma potrzeby używania "@", ponieważ ustawienie "echo" na "wyłączone" powoduje, że to zachowanie staje się automatyczne. „Echo” jest zwykle domyślnie ustawione na „włączone”, gdy rozpoczyna się wykonywanie skryptu. To jest powód, dla którego „@echo off” jest powszechnie używane, aby wyłączyć echo bez wyświetlania aktu wyłączania go.

echo verbose
@echo less verbose
pause
Słoneczny
źródło
3
Zaakceptowałem ten do wyjaśnienia na miejscu bez ... żadnych podpowiedzi związanych z wykonaniem i do mówienia rzeczy takich jak (gadatliwość) procesora poleceń i mówienia o przestrzeni. :) Niezła partia testowa też!
n611x007
7
Najwyraźniej jest to oczywiste dla każdego, ale nie wiedziałem, że działa to tylko po uruchomieniu z .batpliku, tj. Nie działa bezpośrednio z wiersza poleceń.
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. To prawda. Odkryłem również, że może to powodować niepożądane skutki uboczne. Na przykład - @copywykonanie clip < file.txt & pausepolecenia z jakiegoś powodu powoduje skopiowanie tekstu przez mój schowek 1 file copied.
dgo
Złe jest to, że nie mogę tego oficjalnego dokumentu!
Robert
-1

Symbol „at” umieszczony na początku nie tylko ukrywa polecenie, ale może również służyć do dołączania argumentów polecenia przechowywanych w pliku tekstowym. Składnia to exe @ polecenia (jeśli dobrze pamiętam)

Yuri Constantinoff
źródło
3
Nie, jeśli spróbujesz wykonać coś takiego myExe@myCommands, jak to się nie powiedzieis not recognized as an internal or external command
jeb
@jeb, Co się stanie, gdy umieścisz spacje wokół @symbolu? Nie mogę go uruchomić, ale widziałem, że jest używany w plikach wsadowych ...
jdk1.0