如何阻止 CMD 窗口中的输出?我知道如何做这些
@回声关闭
超时/t 3/nobreak >nul
MKDIR 文件 2>nul
但我想知道所有命令的通用方法是什么,或者如何找出每个命令,这样我就不必一直询问。我试图让 XCopy 静默复制,这样屏幕就不会收到垃圾邮件,但我有一种感觉,我也需要它来执行其他命令。
最佳答案
有 2 个输出流:stdout(标准输出控制台)和 stderr(标准错误控制台)。
使用>nul
或更正确的1>nul
,写入stdout的文本将被重定向到空设备。
使用2>nul
,写入stderr的文本将被重定向到空设备。
>nul
和 2>nul
可以在任何命令上使用,也可以同时使用,并且应始终位于行尾。它们也可以用在行首,这在某些特殊情况下有意义,但大多数情况下重定向运算符写在行尾。
大多数控制台命令和应用程序在使用选项 /?
(Windows) 或 -?
(从 Unix 移植时)运行时都会打印帮助。打开命令提示符窗口并尝试使用 xcopy/?
一些命令(例如xcopy)具有特殊选项来抑制输出到stdout。 xcopy 的选项是 /Q
,它是 quiet 的缩写。使用此选项使 xcopy 也更快一点,因为将输出打印到 stdout 需要一些时间,如果输出重定向到空设备,当然会浪费时间。
但是,在将所有输出重定向到空设备时,请注意可能出现的错误停止。例如,在使用 xcopy 时,应另外使用选项 /C
和 /R
以避免复制过程因错误或读取而停止- 目标目录中只有文件,没有启动复制过程的用户的信息,为什么批处理作业由于使用 /Q
和附加 >nul 2>nul
而无法完成。
在批处理文件中,应始终使用 >nul
,而绝不使用 1>nul
,尽管这通常也是可能的。命令行解释器会在执行批处理文件时自动将每个 >nul
替换为 1>nul
(空格 + 1>nul
)。当将某些内容回显到文件中时,应该考虑到这一点,以避免重定向到文件的每行上经常出现不需要的尾随空格。
请参阅 Microsoft 文章 Using command redirection operators了解更多信息。
关于batch-file - 防止批处理命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099466/