Board logo

标题: [其他] 【已解决】关于隐蔽命令 2>nul [打印本页]

作者: raymai97    时间: 2011-8-21 09:00     标题: 【已解决】关于隐蔽命令 2>nul

本帖最后由 raymai97 于 2011-8-21 11:04 编辑

比如我们要隐蔽net的消息,就
  1. net start themes>nul
复制代码
但是如果发生错误,还是会显示,所以就换成
  1. net start themes>nul 2>nul
复制代码
结果无论运行成功或否,都不会显示消息

我不明白的是,2>nul 其实是什么东西,为何一定要 2>nul 呢?如果我放1>nul或3>nul就不行了
2>nul到底是什么神奇的东西呢?

——————————————————————————
答:
重定向的作用是人为修改输出、输入的目标设备,比如把本该输出到屏幕的内容输出到打印机prn,或者输出到文件file,再或者输出到空设备nul,每个句柄只能有一个指向,所以如果把输出重定向到空设备上就相当于屏蔽了这个句柄的输出
句柄0往往是默认输入句柄,句柄1为默认的正确回显输出句柄,而句柄2一般输出错误回显,这只是约定俗成的规律,也有不遵守的,比如type命令的句柄2并非总是错误输出,还有某些命令并不开启句柄0,比如wmic。
至于句柄3~9则由命令自定义,不过一般只用到0~2这三个句柄。【感谢else回答】

例子:
net start uxsms 2>nul 只显示正确时的信息,隐蔽错误信息
net start uxsms >nul 只显示错误信息,隐蔽正确时的信息
net start uxsms >nul 2>nul 无论怎样都不显示信息
作者: 545810831    时间: 2011-8-21 09:57

我只知道 nul 是空设备的意思,1>nul 表示禁止输出正确的信息 ,2>nul 表示禁止输出错误信息。
作者: mstsc    时间: 2011-8-21 22:11

学习了nul的功能    谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2