Co oznacza „@” w skryptach wsadowych systemu Windows

136

Widziałem @jest używany w takich kontekstach:

@echo off

@echo start eclipse.exe

Co to @znaczy?

Baiyan Huang
źródło

Odpowiedzi:

203

Oznacza to, że nie należy wyprowadzać odpowiedniego polecenia. Porównaj następujące dwa pliki wsadowe:

@echo foo

i

echo foo

Pierwsza ma tylko foojako wyjście, a druga drukuje

H:\Stuff>echo foo 
foo

(przynajmniej tutaj). Jak widać, polecenie, które jest uruchamiane, jest również widoczne.

echo offwyłączy to dla całego pliku wsadowego. Jednak echo offsamo wezwanie byłoby nadal widoczne. Dlatego widzisz @echo offna początku pliki wsadowe. Wyłącz echo polecenia i nie powtarzaj polecenia, wyłączając je.

Usunięcie tego wiersza (lub zakomentowanie go) jest często pomocnym narzędziem do debugowania w bardziej złożonych plikach wsadowych, ponieważ można zobaczyć, co jest uruchamiane przed komunikatem o błędzie.

Joey
źródło
14

Do @wyłącza echa dla tego jednego polecenia. Bez niego echo start eclipse.exelinia będzie drukować zarówno zamierzone start eclipse.exe , a ten echo start eclipse.exewiersz.

Do echo offwyłącza echo poleceń przez domyślne.

Więc @echo offcicho wyłącza echo poleceń i tylko dane wyjściowe autora wsadu, które mają być napisane, są faktycznie napisane.

sarnold
źródło
11

Dziedziczy znaczenie z DOS. @ :

W wersji DOS 3.3 i nowszych ukrywa echo polecenia wsadowego. Wszelkie dane wyjściowe generowane przez polecenie są wyświetlane.

Bez tego można by wyłączyć echo polecenia za pomocą echo offpolecenia, ale to polecenie zostanie powtórzone jako pierwsze.

Damien_The_Unbeliever
źródło
Link jest teraz uszkodzony
ojchase
10

Domyślnie plik wsadowy wyświetla swoje polecenie podczas działania. Celem tego pierwszego polecenia, które wyłącza @echo, jest wyłączenie tego wyświetlacza. Polecenie „echo off” wyłącza wyświetlanie całego skryptu, z wyjątkiem samego polecenia „echo off”. Znak „at” „@” z przodu powoduje, że polecenie odnosi się również do siebie samego.

Muhammad Faizan Khan
źródło
3
Nie widzę więcej ani lepszych informacji w Twoim poście, tak jak w innych postach 5-letnich.
jeb
5

Innym przydatnym momentem na dodanie znaku @ jest użycie FORw wierszu poleceń. Na przykład:

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

Poprzedni wiersz pokazuje dla każdego pliku : wiersz polecenia, ECHOpolecenie i wynik ECHOpolecenia. Tą drogą:

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

Wyświetlany jest tylko wynik ECHOpolecenia.

Aacini
źródło
@PsychoData: To zabawne, że zignorowałeś jedyną odpowiedź, która zawiera przydatne informacje dodatkowe do pozostałych 4 odpowiedzi, które do tego czasu już odpowiadały na pytanie w ten sam sposób ...
Aacini
6
Głosowałem w dół, ponieważ nie była to odpowiedź na jego pytanie. Nie dajesz nawet wyjaśnienia, co robi @. Jeśli masz fajne przykłady użycia, świetnie, ale nadal nie jest to odpowiedź na jego pytanie. Możesz również nie wiedzieć, że zagłosowałem również za odpowiedzią, wyjaśniając zakład, co robi i skąd pochodzi. Nie głosowałem przeciw bez powodu. Twoja „odpowiedź” nie jest odpowiedzią. Jest to nieco powiązane stwierdzenie.
PsychoData
2

możesz zawrzeć @ w 'scriptBlock' w ten sposób:

@(
  echo don't echoed
  hostname
)
echo echoed

a zwłaszcza tego nie rób :)

for %%a in ("@") do %%~aecho %%~a
walid2mi
źródło