2010-01-11 7 views
20

로컬로 편집 된 웹 사이트의 내용을 인터넷으로 전송하는 배치 스크립트에 마무리 작업을하고 있습니다.배치 출력을 숨기는 방법

스크립트는 콘솔 창에서 열리고 잘못되었을 때를 대비해 관리자가 알아야 할 많은 내용을 출력합니다. 이 경우 출력은 전자 메일로 보내 지므로 출력을 표시 할 필요가 없으며 불필요하게 업데이트를 실행하는 사용자를 혼동 할 필요가 없습니다. 몇 줄만 표시해야합니다 (예 : "시작 동기화 ..."및 "동기화 완료").

아무도 배치 스크립트에서 출력을 중지하는 방법을 생각할 수 있습니까? 총 "에코"의 종류?

A I 말했듯이 때문에

my_batch_file > nul 

가, 내가 보여줄 필요가 몇 가지를 잘라하지 않습니다 간단한.

답변

34

윈도우 실제로 표준 출력 및 표준 오류의 개념을 가지고 NUL 간다. 다음 예는 다음과 같습니다

TEST.BAT :

@echo off 
echo verbose stuff 1 
echo verbose stuff 2 
echo verbose stuff 3 
echo important stuff! >&2 
echo verbose stuff 4 

당신이 'test.bat'로 실행하면 전체 출력을 얻을 수 있습니다. 'test.bat >nul'으로 실행하면 '중요'출력 (> & 2와 함께 stderr로 리디렉션 된 모든 것) 만 표시됩니다.

+0

하하, 이것은 완벽하게 작동합니다. 감사! –

0

stdout 대신 stderr으로 표시해야하는 몇 가지 사항을 작성할 수 있습니다.

또는 숨기려는 개별 부품의 출력을 리디렉션하십시오.

+0

죄송합니다. 필자는 Windows 시스템을 사용하고 있습니다. 거기에서 작동하지 않습니까? –

+2

오, 당신은 문자 그대로의 배치 파일에 대해 이야기하고 있습니다. 이 경우 별도의 배치 스크립트에 표시하지 않으려는 부분을 분리하여 기본 출력에서 ​​호출하여 출력을 리디렉션 할 수 있습니다. 또한'@ '접두어는 명령 자체가 인쇄되지 않도록합니다. –

7

일괄 스크립트 자체가 두 번째 호출

@echo off 
if "%1" == "1" goto else 
echo start 
call %0 1 > nul 
echo done 
goto done 
:else: 
echo do stuff 
:done: 

표준 출력을 실행할 수있는 것은