我尝试使用ExectoStack执行以下命令
echo "hello.world.url=Hello:World" | C:\cygwin64\bin\gawk.exe -F= "{print $1}"
cmd上的输出符合预期
"hello.world.url
当我使用nsis执行此操作时:
nsExec::ExectoStack 'cmd /c echo "hello.world.url=Hello:World" | C:\cygwin64\bin\gawk.exe -F= "{print $1}"'
pop $0
pop $1
我得到输出为
return code = 0
output = "hello.world.url=Hello:World"
我的猜测是$ 1包含第一个命令(echo)的输出,并且某种程度上没有获取连续命令(gawk)的输出。如果我错过任何一步,请告诉我。
由于
答案 0 :(得分:1)
似乎对我有用:
Section
nsExec::ExectoStack 'cmd /c dir "%windir%\system32" | findstr /I "kernel32"'
pop $0
pop $1
DetailPrint "Return=$0"
DetailPrint "Output=|$1|"
SectionEnd
但你可能会忘记的是$ 1是一个NSIS变量!尝试将其转义为$$1
。