CMD WMI избежать кошмар в Windows - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь запустить процесс из cmd и вернуть его PID (идентификатор процесса).

Команда работает, но с экранированием что-то не так, потому что некоторые аргументы команды приводят к сбою.

Команда, которую я пытаюсь выполнить, выглядит следующим образом:

start /B wmic process call create "\"d:\software\winnmp\bin\PHP\php-7.1.12/php.exe\" \"D:\projects\php\masked/artisan\" queue:work --queue=high,default,low" | find "ProcessId"

Это вернет «Invalid Verb Switch.»

Я сузил его до знака запятой вВысокий, по умолчанию, низкий аргумент, потому что, если я запускаю этот, он работает как ожидалось:

start /B wmic process call create "\"d:\software\winnmp\bin\PHP\php-7.1.12/php.exe\" \"D:\projects\php\masked/artisan\" queue:work --queue=high" | find "ProcessId"

Возвращает: "ProcessId = 1234"

У меня сложилось впечатление, что wmic пытается интерпретировать--queue=high,default,low аргумент, так что я думаю, что он не экранирован должным образом.Я также пытался обернуть все после начала / B в кавычки, но я не могу понять, как это сделать.Я пытался экранировать двойные кавычки с помощью "" и ^ "и \" и с внутренними символами обратной косой черты, которые я пробовал \.

Все пути должны быть в кавычках, потому что я не знаю, будут ли они содержать пробелыили нет.

...