wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何使Windows批处理脚本完全无声?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

几代人一直在问这个问题的变种,但是尽管写了一些非常复杂的Windows脚本,我似乎无法找到如何让它们真正沉默. 以下是我目前的一个脚本的摘录: @ECHO OFF SET scriptDirectory=%~dp0 COPY %scriptDirectory%test.bat %scriptDirectory%test2.bat FOR /F %%f IN ('dir /B "%scriptDir
几代人一直在问这个问题的变种,但是尽管写了一些非常复杂的Windows脚本,我似乎无法找到如何让它们真正沉.

以下是我目前的一个脚本的摘录:

@ECHO OFF
SET scriptDirectory=%~dp0
COPY %scriptDirectory%test.bat %scriptDirectory%test2.bat
FOR /F %%f IN ('dir /B "%scriptDirectory%*.noext"') DO (
del "%scriptDirectory%%%f"
)
ECHO

结果是:

C:\Temp> test.bat
        1 file(s) copied.
File Not Found
Echo is off.

C:\Temp>

而“1个文件被复制”.只是很烦人,“找不到文件”让用户认为出了问题(它没有 – 没有文件没问题).

要抑制输出,请使用重定向到NUl.

控制台命令使用两种输出

>标准输出或标准输出,
>标准错误,或stderr.

在这两者中,stdout更常用于内部命令,如复制,控制台实用程序或外部命令,如find和其他命令,以及第三方控制台程序.

> NUL抑制标准输出并且工作正常,例如用于抑制复制的1个文件.复制命令的消息.替代语法是1> NUl.所以,

COPY file1@H_673_40@ file2@H_673_40@ >NUL

要么

COPY file1@H_673_40@ file2@H_673_40@ 1>NUL

要么

>NUL COPY file1@H_673_40@ file2@H_673_40@

要么

1>NUL COPY file1@H_673_40@ file2@H_673_40@

抑制COPY的所有标准输出.

禁止通常打印到stderr的错误消息,请改用2> NUl.因此,为了抑制DEL打印的文件未找到消息,当找不到指定的文件时,只需在命令行的开头或结尾添加2> NUL:

DEL file@H_673_40@ 2>NUL

要么

2>NUL DEL file@H_673_40@

然有时在尝试删除文件之前实际验证文件是否存在可能是更好的主意,就像您在自己的解决方案中所做的那样.但请注意,您不需要使用循环逐个删除文件.您可以使用单个命令删除批次:

IF EXIST "%scriptDirectory%*.noext" DEL "%scriptDirectory%*.noext"

大佬总结

以上是大佬教程为你收集整理的如何使Windows批处理脚本完全无声?全部内容,希望文章能够帮你解决如何使Windows批处理脚本完全无声?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。