如何隐藏批处理输出

How to hide batch output

提问人:Pekka 提问时间:1/12/2010 更新时间:7/18/2022 访问量:81668

问:

我正在对一个批处理脚本进行最后的润色,该脚本将本地编辑的网站的内容传输到 Internet。

该脚本将在控制台窗口中打开,并输出管理员需要查看的大量内容,以防出现问题。但是,在这种情况下,输出是作为电子邮件发送的,因此无需显示输出并造成不必要地运行更新的用户的混淆。我只需要显示几行(比如,“开始同步......”和“同步完成”)。

谁能想出一种方法来停止批处理脚本中的输出?有点完全的“回声关闭”?

一个简单的

my_batch_file > nul

不会削减它,因为正如我所说,我需要展示一些东西。

Windows 批处理文件

评论


答:

0赞 Anon. 1/12/2010 #1

你可以写一些需要显示的东西,而不是 .stderrstdout

或者,重定向要隐藏的各个部分的输出。

评论

0赞 Pekka 1/12/2010
对不起,我混淆了我的例子,我在这里使用的是 Windows 系统。那里行不通,是吗?
2赞 Anon. 1/12/2010
哦,你说的是一个字面上的批处理文件。在这种情况下,可以将不希望显示的部分分离到单独的 Batch 脚本中,并从主脚本中调用它,从而重定向输出。此外,请记住前缀,它会阻止打印命令本身。@
11赞 jspcal 1/12/2010 #2

批处理脚本可以自行运行

@echo off
if "%1" == "1" goto else
echo start
call %0 1 > nul
echo done
goto done
:else:
echo do stuff
:done:

第二次调用的 stdout 转到 nul

38赞 davr 1/12/2010 #3

Windows 实际上确实有 stdout 和 stderr 的概念。下面是一个示例:

测试.bat:

@echo off
echo verbose stuff 1
echo verbose stuff 2
echo verbose stuff 3
echo important stuff! >&2
echo verbose stuff 4

如果以 '' 身份运行它,您将获得完整的输出。如果你以 '' 的形式运行它,那么你只会得到 'important' 输出(任何重定向到 stderr 的内容,带有 >&2)test.battest.bat >nul

0赞 Jeffrey 12/7/2021 #4

结合并为我工作,例如@> NUL

@FC [file1] [file2] > NUL

在执行批处理文件时隐藏命令及其输出。

此脚本不会停止显示任何错误消息。

1赞 Basj 7/18/2022 #5

有时是不够的。就我而言,我必须这样做.例:>nul2>nul

taskkill /im test.exe 2>nul