wsh获取命令行的返回值
前言
在研究wsh如何获取网络端口相关技术时,找到了ws中的exec函数。相比run,可以获取返回的值,甚至可以实时获取,但是它也几个run没有的优势:
无法对窗体进行任何的操作。最致命的就是无法隐藏了,那么如果你单独拿出来运行的话,那个黑窗口会很尴尬。
只能单独执行命令,甚至无法用到cmd中的任何语法,逻辑运算符都不行,比如&或|。
所以还是老老实实用run吧,结果重定向到文本中去提取。当然如果你本身运行的环境就是在控制台内,且单独执行命令的话,那么exec它绝对是完美的!
js
1 | function ExCmd() { |
while的条件也可以不用!ex.StdOut.AtEndOfStream
检查是否结束,可以使用ex.Status
检查运行状态,但是不稳定,拿到的数据会漏掉一些。
vbs
1 | Set ws = WScript.CreateObject("WScript.Shell") |
相比js,vbs的写法更加简单粗暴。可以配合if找到对应字符串后,结束获取。
参考文献
JScript: Проблема с WshScriptExec.Exec
如何使用VBS检测特定端口是否被占用
WScript.Shell对象的 run()和exec()函数使用详解