gpt4 book ai didi

installation - 如何从 ExecDos::exec 获取输出

转载 作者:行者123 更新时间:2023-12-03 06:46:56 26 4
gpt4 key购买 nike

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

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

我正在执行以下命令,并尝试了多种方法,但我无法在变量或堆栈中获取 ExecDos::exec 的输出。

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

最佳答案

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

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

带有 cmd 前缀的

nsExec::ExecToStack 也应该可以工作...

编辑:

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

!include LogicLib.nsh
section
ExpandEnvStrings $0 %COMSPEC%
StrCpy $1 445 ;Port number
nsExec::ExecToStack '"$0" /C netstat -an|find /C ":$1"'
Pop $0
${If} $0 = 0
Pop $0
MessageBox mb_ok "Port count=$0"
${Else}
; Port not open...
${EndIf}
sectionend

关于installation - 如何从 ExecDos::exec 获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8799631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com