如何从ExecDos :: exec获取输出

时间:2012-01-10 06:54:07

标签: installer nsis netstat

当我在命令提示符中执行netstat -a |find /C $portNumber时,我得到给定端口号所在的总行数。

我想在任何变量中获得相同的计数,以便我可以检查NSIS中的端口是否已被占用或空闲。

我正在排除下面的命令,我尝试了很多方面,但是我无法在变量或堆栈中获得ExecDos :: exec的输出。

ExecDos::exec "netstat -a |find /C '$portNumber'| $output"

1 个答案:

答案 0 :(得分:6)

要启用shell行为,您必须执行cmd.exe /C yourcommand(或者使用{{1}扩展%ComSpec%,但如果您不支持Win9x,则可以使用硬编码cmd.exe)

或者您可以尝试为您执行此操作的ExecCmd plug-in(但它具有较少的选项,因此您必须将输出重定向到文件)

带有cmd前缀的

ExpandEnvStrings也应该有效...

修改

这是一个工作示例(我使用nsExec,因为它是默认安装的一部分)

nsExec::ExecToStack