Что означает «@» в пакетных сценариях Windows - PullRequest
111 голосов
/ 13 декабря 2011

Я видел, что @ используется в таких контекстах:

@echo off

@echo start eclipse.exe

Что означает @ здесь?

Ответы [ 7 ]

169 голосов
/ 13 декабря 2011

Это означает, что не выводить соответствующую команду.Сравните следующие два пакетных файла:

@echo foo

и

echo foo

В первом выводе выводится только foo, а в последнем выводится

H:\Stuff>echo foo 
foo

(здесь, по крайней мере).Как видно, команда, которая запускается, тоже видна.

echo off отключит ее для всего пакетного файла.Однако сам вызов echo off все равно будет виден.Вот почему вы видите @echo off в начале пакетных файлов.Отключите отображение команд и . Не повторяйте команду, отключая ее.

Удаление этой строки (или ее комментирование) часто является полезным инструментом отладки в более сложных пакетных файлах, как вы можетепосмотрите, что запускается до появления сообщения об ошибке.

19 голосов
/ 13 декабря 2011

Это означает «не выводить команду на стандартный вывод».

Довольно странно,

echo off

отправит echo off на выход! Итак,

@echo off

отключает это автоматическое поведение эха и останавливает его для всех будущих команд.

Источник: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true

11 голосов
/ 13 декабря 2011

@ отключает эхо для этой одной команды.Без него строка echo start eclipse.exe будет печатать как предполагаемую start eclipse.exe , так и строку echo start eclipse.exe.

echo off отключает вывод команды по умолчанию.

Таким образом, @echo off автоматически отключает отображение команд и фактически выводит только тот автор пакета, который должен быть записан.

7 голосов
/ 13 декабря 2011

Он наследует значение от DOS. @ :

В DOS версии 3.3 и выше скрывает эхо пакетной команды.Любой вывод, сгенерированный командой, выводится эхом.

Без него вы можете отключить эхо-запрос команды, используя команду echo off, но эта команда будет выведена первой.

5 голосов
/ 13 декабря 2011

Другое полезное время для включения @ - это использование FOR в командной строке.Например:

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

Предыдущая строка показывает для каждого файла : командная строка, команда ECHO и результат команды ECHO.Таким образом:

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

Только результат команды ECHO показан.

3 голосов
/ 20 октября 2016

По умолчанию командный файл будет отображать свою команду при запуске. Целью этой первой команды, которая @ echo off , является отключение этого дисплея. Команда «echo off» отключает отображение всего сценария, кроме самой команды «echo off». Знак "at" "@" спереди заставляет команду также применяться к себе.

2 голосов
/ 14 декабря 2011

вы можете включить @ в «scriptBlock» следующим образом:

@(
  echo don't echoed
  hostname
)
echo echoed

и особенно не делать этого:)

for %%a in ("@") do %%~aecho %%~a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...