2014-06-07 39 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