我尝试使用:
string result;
string path = "C:/winccoa.projects/filters/bin/tools/rxrepl.exe";
string cmd = "'opcki' | " + path + " -s 'op' -r 'tata'";
system(cmd, result);
DebugN(result);
但是在LogViewer中我什么也没看到,而是[“ tatacki”]
为什么?我做错了什么?
在PowerShell中正常运行:
PS C:\> 'opcki' | C:/winccoa.projects/filters/bin/tools/rxrepl.exe -s "op" -r "tata"
tatacki
答案 0 :(得分:2)
我假设WinCC的system()
函数的目标对象是cmd.exe
,而不是powershell.exe
(这很典型,因为历史上cmd.exe
是默认的Shell,API不太可能进行更改,以保持向后兼容性。
因此,为cmd.exe
制定命令:
string cmd = "echo opcki | " + path + " -s op -r tata";
不使用echo
来产生输出,并且省略了'...'
无法识别的单引号(cmd.exe
)。
如果需要用 embedded 引用,则必须在`"
PowerShell字符串内使用"..."
(或使用'...'
PowerShell字符串(其内容已按字面意思)并按原样嵌入"
个字符。