Batch file 阻止批处理命令的输出
如何防止CMD窗口中的输出?我知道该怎么做 @回音 超时/t 3/nobreak>nul MKDIR文件2>nul 但是我想知道所有命令的一般方法是什么,或者如何找到每个命令的方法,这样我就不用一直问了。我正试图让XCopy安静地复制,这样屏幕就不会被垃圾邮件攻击,但我有一种感觉,其他命令也需要它 通常的方法就是使用Batch file 阻止批处理命令的输出,batch-file,output,Batch File,Output,如何防止CMD窗口中的输出?我知道该怎么做 @回音 超时/t 3/nobreak>nul MKDIR文件2>nul 但是我想知道所有命令的一般方法是什么,或者如何找到每个命令的方法,这样我就不用一直问了。我正试图让XCopy安静地复制,这样屏幕就不会被垃圾邮件攻击,但我有一种感觉,其他命令也需要它 通常的方法就是使用>nul将标准输出重定向到nul。它应该始终是每行的最后一部分 (您使用的mkdir示例重定向标准错误(2>nul而不是标准输出;我不确定它为什么会这样做,但您大概知道为什么会这样做
>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有特殊的选项来抑制输出到stdout。xcopy的选项是/Q
,它是静默的缩写。使用此选项可以使xcopy更快一点,因为将输出打印到stdout需要一些时间,当然也是如此e如果输出重定向到空设备,则浪费时间
但在将所有输出重定向到空设备时,请注意可能出现的错误停止。例如,在使用xcopy时,应另外使用/C
和/R
选项,以避免复制过程因错误而停止,或目标目录中的只读文件没有启动copy pro的用户的信息由于使用了/Q
和附加的>nul 2>nul
,因此批处理作业无法完成
在批处理文件中,应始终使用>nul
,但决不能使用1>nul
,尽管这通常也是可能的。在执行批处理文件时,命令行解释器会自动将每个>nul
替换为1>nul
(空格+1>nul
)。当将某个内容回送到文件中时,应考虑到这一点,以避免重定向到文件中的每行上出现不必要的尾随空间
有关更多信息,请参阅Microsoft文章。和>>之间的区别是什么?
将截断现有文件,如果文件已经存在,则将其追加(添加到)。如果文件还不存在,则两者都将创建该文件,但>
将在现有内容的末尾添加文本。