让批处理不回显错误信息

又好长时间没写博客了,主要是前一段时间觉得没什么好写的。但现在我决定写一篇,虽然上班时间写博客不太好,但要写的内容让我心情很激动,所以我决定现在就写了。

最近在用InstallShield写些Install Script脚本,给Team做Installation的support,但因为有些注册表项需要删掉,于是又写了一个批处理用来在安装之前删除注册表。为了不让删除注册表的信息在控制台回显,我使用了 > nul 来处理。

现在问题来了,如果注册表中相关的项已经不存在,那么在删除时控制台会显示找不到注册表项的错误信息,本来这也没啥,但Team的QA说了:你既然正常删除不显示,那么删除出错也应该不显示啊,而且注册表项不存在并不影响安装,所以这不能算错误,但你控制台显示个大大的ERROR信息在那算个啥。。。

好吧,放狗一搜,还真有答案:在命令后面加个 2> nul 就可以不输出错误信息了。

本来问题解决了,但那该死的好奇心又来了:这是为什么呢?于是继续放狗搜,才发现,原来 2> 代表重定向错误输出,而之前一直用的 > 只是代表重定向标准输出,而只是我一直不知道罢了,一直都跟着别人用 > nul 来处理,却从来没了解过其本质,只是想当然的觉得就是这样,其实不然,小小的符号里面也蕴含了很深的道理。

看来真是活到老,学到老啊,之前居然从来没听过也从来没看过 2> 的用法,唉,白活了。

原文地址:https://www.cnblogs.com/ini_always/p/2177042.html