2010-01-11 62 views
20

我正在完成一個批處理腳本,將本地編輯的網站的內容傳輸到互聯網。如何隱藏批輸出

該腳本在控制檯窗口中打開,並輸出管理員需要查看的大量內容以防出現問題。但是,在這種情況下,輸出將作爲電子郵件發送,因此不需要顯示輸出並將不必要地運行更新的用戶混淆。我只需要顯示幾行(比如「開始同步...」和「同步完成」)。

任何人都可以想出一種方法來停止批處理腳本中的輸出嗎?一種總「回聲消失」?

簡單

my_batch_file > nul 

不會削減它,因爲正如我所說,一些事情我需要證明。

回答

34

Windows實際上確實有輸出和錯誤的概念。這裏有一個例子:

下的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',那麼你只會得到'重要的'輸出(任何重定向到stderr,用> & 2)

+0

哈,這對我來說是完美的。謝謝! – 2010-01-11 21:14:02

0

你可以寫出一些需要顯示的東西給stderr而不是stdout

或者,也可以重定向您要隱藏的各個部分的輸出。

+0

對不起,我混淆了我的例子,我在這裏的Windows系統。沒有在那裏工作嗎? – 2010-01-11 21:01:08

+2

哦,你在談論一個字面量的批處理文件。在這種情況下,您可以將不想顯示的部分分離爲單獨的批處理腳本,並從主處理器調用它,重定向輸出。另外,請記住'@'前綴,它會停止打印命令本身。 – 2010-01-11 21:03:32

7

批處理腳本可以運行本身

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

標準輸出第二調用去NUL