Что означает "@" в командных сценариях Windows

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

@echo off

@echo start eclipse.exe

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

Ответ 1

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

@echo foo

и

echo foo

Первый имеет только foo как вывод, а последний печатает

H:\Stuff>echo foo 
foo

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

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

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

Ответ 2

Это означает, что "не отсылать команду к стандартным выводам".

Скорее странно,

echo off

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

@echo off

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

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

Ответ 3

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

echo off отключает эхо-сигнал команды by-default.

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Отображается результат команды ECHO.

Ответ 6

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

@(
  echo don't echoed
  hostname
)
echo echoed

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

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

Ответ 7

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