Co oznacza " @ " w skryptach wsadowych systemu Windows

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

@echo off

@echo start eclipse.exe

Co oznacza @ tutaj?

Author: ROMANIA_engineer, 2011-12-13

7 answers

Oznacza to, że nie należy wypisywać odpowiednich poleceń. Porównaj dwa następujące pliki wsadowe:

@echo foo

I

echo foo

Pierwszy ma tylko foo jako wyjście, podczas gdy drugi drukuje

H:\Stuff>echo foo 
foo

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

echo off wyłączy to dla całego pliku wsadowego. Jednak samo wywołanie echo off nadal byłoby widoczne. Dlatego widzisz @echo off na początku plików wsadowych. Wyłącz polecenie echo i nie echo polecenia wyłączającego go.

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

 148
Author: Joey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 08:13:02

Oznacza "nie echo polecenia do standardowego wyjścia".

Raczej dziwnie,

echo off

Wyśle echo off do wyjścia! Więc

@echo off

Wyłącza automatyczne echo i zatrzymuje je również dla wszystkich przyszłych poleceń.

Źródło: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
 15
Author: Jeremy McGee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 08:14:32

@ wyłącza echo dla tego polecenia. Bez niej linia echo start eclipse.exe wydrukuje zarówno zamierzony start eclipse.exe i linii echo start eclipse.exe.

echo off wyłącza domyślnie polecenie echo.

Więc @echo off po cichu wyłącza polecenie echoing, i tylko output the batch author intended to be W rzeczywistości jest napisany.

 10
Author: sarnold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 08:13:18

Dziedziczy znaczenie z DOS. @:

W DOS-ie w wersji 3.3 i nowszej, ukrywa echo polecenia wsadowego. Każde wyjście wygenerowane przez polecenie jest wyświetlane.

Bez niego, można by wyłączyć Echo polecenia używając echo off, ale to polecenie byłoby Echo jako pierwsze.

 7
Author: Damien_The_Unbeliever,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 08:13:13

Innym przydatnym czasem do włączenia @ jest użycie FOR w wierszu poleceń. Na przykład:

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

Poprzednia linia pokazuje dla każdego pliku: wiersz polecenia, polecenie ECHO i wynik polecenia ECHO. W ten sposób:

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

Pokazany jest tylko wynik ECHO polecenia.

 5
Author: Aacini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 17:32:17

Możesz umieścić @ w 'scriptblocku' w następujący sposób:

@(
  echo don't echoed
  hostname
)
echo echoed

A szczególnie tego nie rób:)

for %%a in ("@") do %%~aecho %%~a
 2
Author: walid2mi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-13 21:20:16

Domyślnie, plik wsadowy wyświetli swoje polecenie podczas uruchamiania. Celem tego pierwszego polecenia @echo off jest wyłączenie wyświetlacza. Polecenie "echo off" wyłącza wyświetlanie całego skryptu, z wyjątkiem samego polecenia "echo off". znak " at "" @ " z przodu sprawia, że polecenie stosuje się również do siebie.

 2
Author: Muhammad Faizan Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-20 10:12:47