Как я могу использовать 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
не узнает