Що означає "@" у пакетних сценаріях Windows


132

Я бачив @, що використовується в таких контекстах:

@echo off

@echo start eclipse.exe

Що @тут означає?

Відповіді:


197

Це означає не виводити відповідну команду. Порівняйте наступні два пакетні файли:

@echo foo

і

echo foo

Перший має лише fooвихід, а другий друкує

H:\Stuff>echo foo 
foo

(тут, принаймні). Як видно команда, яка виконується, також видна.

echo offвимкне це для повного пакетного файлу. Однак сам echo offдзвінок все одно буде видно. Ось чому ви бачите @echo offна початку пакетні файли. Вимкніть команду, що лунає, і не повторюйте команду, вимикаючи її.

Видалення цього рядка (або коментування його) часто є корисним інструментом налагодження у більш складних пакетних файлах, оскільки ви можете бачити, що працює до повідомлення про помилку.


25

Це означає "не повторюйте команду стандартному виводу".

Досить дивно,

echo off

надішлемо echo offна вихід! Так,

@echo off

вимикає цю автоматичну ехо-поведінку - і зупиняє її також для всіх майбутніх команд.

Джерело: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true


14

В @відключає відлуння для цієї однієї команди. Без цього, echo start eclipse.exeлінія буде друкувати як передбачуваний start eclipse.exe і на echo start eclipse.exeлінії.

У echo offВимикає за замовчуванням команди луни.

Таким чином @echo offмовчки вимикає команду, що лунає, і виводиться лише запит автора, призначеного для запису.


11

Він успадковує значення від DOS. @ :

У DOS версії 3.3 та пізнішої версії ховається відлуння командної партії. Будь-який результат, генерований командою, повторюється.

Без нього ви могли б вимкнути команду, що лунає за допомогою echo offкоманди, але ця команда повториться спочатку.


Зараз посилання розірвано
ойчасе

8

За замовчуванням пакетний файл відображатиме свою команду під час роботи. Мета цієї першої команди, яка @echo off, - вимкнути цей дисплей. Команда "echo off" вимикає дисплей для всього сценарію, за винятком самої команди "echo off". Знак "at" "@" попереду змушує команду застосувати і до себе.


3
Я не бачу більше або кращої інформації у вашій публікації, як і в інших 5-річних публікаціях.
Джеб

5

Ще один корисний час для включення @ - це використання FORв командному рядку. Наприклад:

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

Попередній рядок показує для кожного файлу : командний рядок, ECHOкоманда та результат ECHOкоманди. Сюди:

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

Просто ECHOпоказаний результат команди.


@PsychoData: Смішно, що ви відхилили єдину відповідь, яка надає корисну інформацію додатково до інших 4 відповідей, які, тим часом, вже відповіли на це питання так само ...
Aacini

6
Я поклонився тому, що це була не відповідь на його запитання. Ви навіть не даєте пояснення, що робить @. Якщо у вас є прикольні приклади використання, чудово, але це все ще не є відповіддю на його питання. Ви можете також не знати, що я також схвалив відповідь із поясненням ставки, що це робить і звідки вона береться. Я не просто виступав без жодної причини. Ваша "відповідь" - це не відповідь. Це дещо пов'язане твердження.
PsychoData

2

ви можете включити @ у "scriptBlock" так:

@(
  echo don't echoed
  hostname
)
echo echoed

і особливо не робити цього :)

for %%a in ("@") do %%~aecho %%~a
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.