Как я могу использовать system () с rxrepl в WinCC OA? - PullRequest
0 голосов
/ 09 сентября 2018

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

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 голосов
/ 09 сентября 2018

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

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

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

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

Если бы потребовалось внедренное цитирование, вам нужно было бы использовать `" внутри "..." строк PowerShell (или использовать '...' строк PowerShell (содержимое которых воспринимается буквально) и вставлять " chars. как есть).

...