batch-file - 防止批处理命令的输出

标签 batch-file output

如何阻止 CMD 窗口中的输出?我知道如何做这些

@回声关闭

超时/t 3/nobreak >nul

MKDIR 文件 2>nul

但我想知道所有命令的通用方法是什么,或者如何找出每个命令,这样我就不必一直询问。我试图让 XCopy 静默复制,这样屏幕就不会收到垃圾邮件,但我有一种感觉,我也需要它来执行其他命令。

最佳答案

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

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

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

>nul2>nul 可以在任何命令上使用,也可以同时使用,并且应始终位于行尾。它们也可以用在行首,这在某些特殊情况下有意义,但大多数情况下重定向运算符写在行尾。

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

一些命令(例如xcopy)具有特殊选项来抑制输出到stdoutxcopy 的选项是 /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/

相关文章:

batch-file - 如何在执行时将时间和日期数据从批处理文件记录到 .log 文件

windows - 在编译时获取 NSIS 中的文件夹名称

css - 如何精确测试 CSS 最终计算值是否在页面上的任何地方发生了变化?

linux - Mercurial Hg 未发现变化 - 无法推出 Hg

python - 如何在Python中使用numpy.savetxt居中对齐不同长度的列?

c - C 程序协助 : Solving for Delta

batch-file - 删除/F 末尾的空格

windows - 如何将文件名保存到 Windows 批处理文件中的变量中?

Azure 管道 BatchScript 任务未在其部署到的计算机上运行脚本

python - 运行Python代码时如何从Pylint获取报告+分数?