我正在尝试从cmd启动一个进程并返回其PID(进程ID)。
该命令有效,但是转义有问题,因为某些命令参数使其失败。
我要运行的命令是这个命令:
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"
这将返回“无效动词切换”。
我将其范围缩小为高,默认,低参数中的逗号,因为如果运行此参数,它将按预期运行:
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后的所有内容都用引号引起来,但是我不知道该怎么做。我尝试使用“”,“ ^”和“ \”转义双引号,并尝试使用\内在转义的反斜杠。
所有路径都必须用引号引起来,因为我不知道它们是否将包含空格。