2010-01-11 74 views
20

我正在完成一个批处理脚本,将本地编辑的网站的内容传输到互联网。如何隐藏批输出

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

任何人都可以想出一种方法来停止批处理脚本中的输出吗?一种总“回声消失”?

简单

my_batch_file > nul 

不会削减它,因为正如我所说,一些事情我需要证明。

回答

34

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)

+0

哈,这对我来说是完美的。谢谢! – 2010-01-11 21:14:02

0

你可以写出一些需要显示的东西给stderr而不是stdout

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

+0

对不起,我混淆了我的例子,我在这里的Windows系统。没有在那里工作吗? – 2010-01-11 21:01:08

+2

哦,你在谈论一个字面量的批处理文件。在这种情况下,您可以将不想显示的部分分离为单独的批处理脚本,并从主处理器调用它,重定向输出。另外,请记住'@'前缀,它会停止打印命令本身。 – 2010-01-11 21:03:32

7

批处理脚本可以运行本身

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

标准输出第二调用去NUL