如何在WinCC OA中将system()与rxrepl一起使用?

时间:2018-09-09 10:25:53

标签: windows powershell wincc

我尝试使用:

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

1 个答案:

答案 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字符串(其内容已按字面意思)并按原样嵌入"个字符。