Я видел, что @ используется в таких контекстах:
@echo off
@echo start eclipse.exe
Что означает @ здесь?
Я видел, что @ используется в таких контекстах:
@echo off
@echo start eclipse.exe
Что означает @ здесь?
Это означает, что не выводить соответствующую команду. Сравните следующие два командных файла:
@echo foo
и
echo foo
Первый имеет только foo как вывод, а последний печатает
H:\Stuff>echo foo
foo
(здесь, по крайней мере). Как видно, видимая команда также видна.
echo off отключит это для полного командного файла. Однако вызов echo off сам по себе будет видимым. Вот почему вы видите @echo off в начале пакетных файлов. Отключите команду эхо и не отгоните команду, отключив ее.
Удаление этой строки (или ее комментирование) часто является полезным инструментом отладки в более сложных командных файлах, так как вы можете видеть, что выполняется до сообщения об ошибке.
Это означает, что "не отсылать команду к стандартным выводам".
Скорее странно,
echo off
отправит echo off на выход! Итак,
@echo off
отключает это автоматическое поведение эха и останавливает его для всех будущих команд.
Источник: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
@ отключает эхо для этой команды. Без него строка echo start eclipse.exe будет печатать как предполагаемые строки start eclipse.exe, так и echo start eclipse.exe.
echo off отключает эхо-сигнал команды by-default.
Итак, @echo off молча отключает эхо-сигнал команды, и на самом деле записывается только вывод автора партии, предназначенного для написания.
Он наследует значение от DOS. @:
В версии DOS версии 3.3 и выше скрывается эхо пакетной команды. Любой вывод, сгенерированный командой, эхом.
Без этого вы можете отключить эхо команды, используя команду echo off, но эта команда будет эхом в первую очередь.
Еще одно полезное время для включения @- это когда вы используете FOR в командной строке. Например:
FOR %F IN (*.*) DO ECHO %F
Предыдущая строка для каждого файла: командная строка, команда ECHO и результат команды ECHO. Таким образом:
FOR %F IN (*.*) DO @ECHO %F
Отображается результат команды ECHO.
вы можете включить @в 'scriptBlock' следующим образом:
@(
echo don't echoed
hostname
)
echo echoed
и особенно этого не делать:)
for %%a in ("@") do %%~aecho %%~a
По умолчанию командный файл будет отображать свою команду при запуске. Цель этой первой команды, которая @echo off состоит в отключении этого дисплея. Команда "echo off" отключает отображение для всего script, за исключением самой команды "echo off". Знак "at" "@" спереди делает команду применимой к себе.