我正在完成一个批处理脚本,将本地编辑的网站的内容传输到互联网。如何隐藏批输出
该脚本在控制台窗口中打开,并输出管理员需要查看的大量内容以防出现问题。但是,在这种情况下,输出将作为电子邮件发送,因此不需要显示输出并将不必要地运行更新的用户混淆。我只需要显示几行(比如“开始同步...”和“同步完成”)。
任何人都可以想出一种方法来停止批处理脚本中的输出吗?一种总“回声消失”?
简单
my_batch_file > nul
不会削减它,因为正如我所说,一些事情我需要证明。
我正在完成一个批处理脚本,将本地编辑的网站的内容传输到互联网。如何隐藏批输出
该脚本在控制台窗口中打开,并输出管理员需要查看的大量内容以防出现问题。但是,在这种情况下,输出将作为电子邮件发送,因此不需要显示输出并将不必要地运行更新的用户混淆。我只需要显示几行(比如“开始同步...”和“同步完成”)。
任何人都可以想出一种方法来停止批处理脚本中的输出吗?一种总“回声消失”?
简单
my_batch_file > nul
不会削减它,因为正如我所说,一些事情我需要证明。
Windows实际上确实有输出和错误的概念。这里有一个例子:
下的test.bat:
@echo off
echo verbose stuff 1
echo verbose stuff 2
echo verbose stuff 3
echo important stuff! >&2
echo verbose stuff 4
如果你运行它为 'test.bat
' 你会得到完整的输出。如果你运行它'test.bat >nul
',那么你只会得到'重要的'输出(任何重定向到stderr,用> & 2)
你可以写出一些需要显示的东西给stderr
而不是stdout
。
或者,也可以重定向您要隐藏的各个部分的输出。
对不起,我混淆了我的例子,我在这里的Windows系统。没有在那里工作吗? – 2010-01-11 21:01:08
哦,你在谈论一个字面量的批处理文件。在这种情况下,您可以将不想显示的部分分离为单独的批处理脚本,并从主处理器调用它,重定向输出。另外,请记住'@'前缀,它会停止打印命令本身。 – 2010-01-11 21:03:32
批处理脚本可以运行本身
@echo off
if "%1" == "1" goto else
echo start
call %0 1 > nul
echo done
goto done
:else:
echo do stuff
:done:
标准输出第二调用去NUL
哈,这对我来说是完美的。谢谢! – 2010-01-11 21:14:02