Как я могу использовать system() с rxrepl в WinCC OA?

Я пытаюсь использовать:

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 ответ

Решение

Я предполагаю, что WinCC system() функциональные цели cmd.exeне powershell.exe (что типично, потому что исторически cmd.exe была оболочкой по умолчанию, и API вряд ли изменятся в интересах обратной совместимости).

Поэтому сформулируйте свою команду для cmd.exe:

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

Не использование echo производить вывод и пропуск одиночных кавычек ('...'), который cmd.exe не узнает

Другие вопросы по тегам