2

我尝试使用:

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
4

1 回答 1

3

我假设 WinCC 的system()函数 targets cmd.exe,而不是powershell.exe(这是典型的,因为历史cmd.exe上一直是默认 shell,并且 API 不太可能更改,以保持向后兼容性)。

因此,制定您的命令cmd.exe

string cmd = "echo opcki | " + path + " -s op -r tata";

不是使用echo生成输出和省略单引号 ( '...'),它cmd.exe不识别。

如果需要嵌入引用,则必须`""..."PowerShell 字符串中使用(或使用'...'PowerShell 字符串(其内容按字面意思表示)并按"原样嵌入字符)。

于 2018-09-09T14:28:33.837 回答