Batch file 阻止批处理命令的输出

Batch file 阻止批处理命令的输出,batch-file,output,Batch File,Output,如何防止CMD窗口中的输出?我知道该怎么做 @回音 超时/t 3/nobreak>nul MKDIR文件2>nul 但是我想知道所有命令的一般方法是什么,或者如何找到每个命令的方法,这样我就不用一直问了。我正试图让XCopy安静地复制,这样屏幕就不会被垃圾邮件攻击,但我有一种感觉,其他命令也需要它 通常的方法就是使用>nul将标准输出重定向到nul。它应该始终是每行的最后一部分 (您使用的mkdir示例重定向标准错误(2>nul而不是标准输出;我不确定它为什么会这样做,但您大概知道为什么会这样做

如何防止CMD窗口中的输出?我知道该怎么做

@回音

超时/t 3/nobreak>nul

MKDIR文件2>nul

但是我想知道所有命令的一般方法是什么,或者如何找到每个命令的方法,这样我就不用一直问了。我正试图让XCopy安静地复制,这样屏幕就不会被垃圾邮件攻击,但我有一种感觉,其他命令也需要它

通常的方法就是使用
>nul
将标准输出重定向到
nul
。它应该始终是每行的最后一部分

(您使用的
mkdir
示例重定向标准错误(
2>nul
而不是标准输出;我不确定它为什么会这样做,但您大概知道为什么会这样做。)

但是,这样做的问题是,您无法获得任何关于哪些工作有效,哪些失败的信息,这使得跟踪问题变得很困难。当您不需要在屏幕上显示信息,但希望在需要时稍后提供这些信息时,请改为重定向到文件

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

有两个输出流:stdout(标准输出控制台)和stderr(标准错误控制台)

使用
>nul
或更正确的
1>nul
时,写入stdout的文本将重定向到空设备

使用
2>nul
写入stderr的文本被重定向到空设备

>nul
2>nul
可以用于任何命令,也可以同时用于这两个命令,并且应该始终位于行的末尾。它们也可以用于行的开头,这在某些特殊情况下是有意义的,但重定向操作符通常写在行的末尾

大多数控制台命令和应用程序在使用选项
/?
(Windows)或
-?
(从Unix移植时)运行时会打印帮助。打开命令提示窗口,然后使用
xcopy/?

一些命令,如xcopy有特殊的选项来抑制输出到stdoutxcopy的选项是
/Q
,它是静默的缩写。使用此选项可以使xcopy更快一点,因为将输出打印到stdout需要一些时间,当然也是如此e如果输出重定向到空设备,则浪费时间

但在将所有输出重定向到空设备时,请注意可能出现的错误停止。例如,在使用xcopy时,应另外使用
/C
/R
选项,以避免复制过程因错误而停止,或目标目录中的只读文件没有启动copy pro的用户的信息由于使用了
/Q
和附加的
>nul 2>nul
,因此批处理作业无法完成

在批处理文件中,应始终使用
>nul
,但决不能使用
1>nul
,尽管这通常也是可能的。在执行批处理文件时,命令行解释器会自动将每个
>nul
替换为
1>nul
(空格+
1>nul
)。当将某个内容回送到文件中时,应考虑到这一点,以避免重定向到文件中的每行上出现不必要的尾随空间


有关更多信息,请参阅Microsoft文章。

和>>之间的区别是什么?
将截断现有文件,如果文件已经存在,则将其追加(添加到)。如果文件还不存在,则两者都将创建该文件,但
>
将在现有内容的末尾添加文本。