Я пытаюсь запустить процесс из 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 в кавычки, но я не могу понять, как это сделать.Я пытался экранировать двойные кавычки с помощью "" и ^ "и \" и с внутренними символами обратной косой черты, которые я пробовал \.
Все пути должны быть в кавычках, потому что я не знаю, будут ли они содержать пробелыили нет.