2014-06-07 37 views
2

如何防止CMD窗口中的輸出?我知道該怎麼做這些防止批量中的命令輸出

關閉@echo

超時/噸,3/NOBREAK> NUL

MKDIR文件2> NUL

但我想知道,一般的方法是什麼所有的命令,或者如何找出每個命令的方式,我不必一直詢問。我試圖讓XCopy默默複製,這樣屏幕不會被垃圾郵件,但我有一種感覺,我也需要它用於其他命令。

回答

0

「一般方法」正是你在做什麼,它是使用>nul將標準輸出重定向到nul。它應該始終是每一行的最後一部分。

(你使用重定向標準錯誤(2>nul而不是標準輸出mkdir例子。我不知道爲什麼會那樣做,但想必你知道爲什麼得到了些)

問題儘管如此,你卻沒有得到任何有關什麼工作和失敗的信息,這使得很難追蹤到問題。當你不需要在屏幕上顯示信息,但是如果需要時可以使用它,改爲重定向到文件

REM Redirect first command to log, truncating anything 
REM that existed in the file before. 
mkdir Files > temp.log 

REM Copy some files into the folder just created, appending 
REM the results to the same log file 
xcopy *.txt Files\ >> temp.log 
+0

>和>>有什麼區別? – user3717248

+0

'>'截斷現有文件,如果文件已經存在,則將其追加(添加到)。如果它們不存在,它們都會創建文件,但是'>>'會在現有內容的末尾添加文本。 –

2

有2個輸出流s:stdout(標準輸出控制檯)和stderr(標準錯誤控制檯)。

隨着>nul或更正確1>nul寫到標準輸出文被重定向到空設備。

2>nul將寫入stderr的文本重定向到空設備。

>nul2>nul可以在任何命令上使用,也可以同時使用,並且應該總是在行尾。它們也可以在一些特殊情況下有意義的行的開頭使用,但大多數情況下重定向操作符都是在行尾寫的。

當使用選項/?(Windows)或-?(從Unix移植時)運行時,大多數控制檯命令和應用程序都會打印幫助。打開命令提示符窗口,並嘗試與xcopy /?

XCOPY某些命令具有特殊的選項來抑制輸出到標準輸出xcopy的選項是/Q,這是安靜的簡稱。使用此選項使xcopy在將輸出打印到標準輸出需要一些時間,並且當輸出重定向到空設備時浪費時間。

但是,將所有輸出重定向到空設備時,請注意可能出現的錯誤暫停。例如,在使用xcopy時,應該另外使用選項/C/R以避免在錯誤複製過程或目標目錄中的只讀文件停止時,而沒有啓動複製過程的用戶信息爲什麼批量作業沒有完成,因爲使用/Q和另外的>nul 2>nul

在批處理文件中總是應該使用>nul而不是1>nul儘管這通常也是可行的。命令行解釋程序將自動執行批處理文件>nul替換爲 1>nul(空格+ 1>nul)。當回顯到文件中時應該考慮到這一點,以避免每行上通常不需要的尾部空間重定向到文件中。

有關更多信息,請參閱Microsoft文章Using command redirection operators