Чтобы включить поведение оболочки, вы должны выполнить cmd.exe /C yourcommand
(или развернуть% ComSpec% с помощью ExpandEnvStrings
, но hardcoding cmd.exe подходит, если вы не поддерживаете Win9x)
Или вы можете попробовать Плагин ExecCmd , который делает это за вас (но у него меньше опций, поэтому вам придется перенаправить вывод в файл)
nsExec::ExecToStack
с префиксом cmd также должен работать...
Редактировать:
Вот рабочий пример (я использовал 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