[windows] Windows 배치 스크립트에서“@”의 의미

나는 @그런 맥락에서 사용되는 것을 보았다 .

@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바이 기본 명령 에코 해제합니다.

따라서 @echo off명령 에코를 자동으로 끄고 실제로 작성된 배치 작성자 출력 만 출력됩니다.


답변

DOS에서 의미를 상속합니다. @ :

DOS 버전 3.3 이상에서는 배치 명령의 에코를 숨 깁니다. 명령으로 생성 된 모든 출력이 에코됩니다.

이를 사용하지 않으면 명령을 사용하여 명령 에코를 끌 수 echo off있지만 해당 명령이 먼저 에코됩니다.


답변

기본적으로 배치 파일은 명령이 실행될 때 해당 명령을 표시합니다. @echo를 끄는 이 첫 번째 명령의 목적은 이 디스플레이를 끄는 것입니다. “echo off”명령은 “echo off”명령 자체를 제외하고 전체 스크립트의 표시를 끕니다. 앞에있는 “at”기호 “@”는 명령을 자신에게도 적용합니다.


답변

@을 포함시키는 또 다른 유용한 시간 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