提问人:Pekka 提问时间:1/12/2010 更新时间:7/18/2022 访问量:81668
如何隐藏批处理输出
How to hide batch output
问:
我正在对一个批处理脚本进行最后的润色,该脚本将本地编辑的网站的内容传输到 Internet。
该脚本将在控制台窗口中打开,并输出管理员需要查看的大量内容,以防出现问题。但是,在这种情况下,输出是作为电子邮件发送的,因此无需显示输出并造成不必要地运行更新的用户的混淆。我只需要显示几行(比如,“开始同步......”和“同步完成”)。
谁能想出一种方法来停止批处理脚本中的输出?有点完全的“回声关闭”?
一个简单的
my_batch_file > nul
不会削减它,因为正如我所说,我需要展示一些东西。
答:
0赞
Anon.
1/12/2010
#1
你可以写一些需要显示的东西,而不是 .stderr
stdout
或者,重定向要隐藏的各个部分的输出。
评论
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.bat
test.bat >nul
0赞
Jeffrey
12/7/2021
#4
结合并为我工作,例如@
> NUL
@FC [file1] [file2] > NUL
在执行批处理文件时隐藏命令及其输出。
此脚本不会停止显示任何错误消息。
1赞
Basj
7/18/2022
#5
有时是不够的。就我而言,我必须这样做.例:>nul
2>nul
taskkill /im test.exe 2>nul
评论