循环中的 Wmic 进程调用不会启动 cmd

Wmic process call in for loop doesn't start the cmd

我正在尝试检索通过批处理文件启动的 Java 应用程序的 ProcessID。问题是应用程序没有启动。

我的代码:

set cmd=java -jar XXXXXXX.jar XXXXXX.yml
for /f "tokens=2 delims==; " %%a in (' wmic process call create "%cmd%" ^| find "ProcessId" ') do set PID=%%a
start cmd /k echo %pid%
PAUSE

批处理文件对空格非常挑剔。

改变这个:

set cmd = java -jar XXXXXXX.jar XXXXXX.yml

为此:

set cmd=java -jar XXXXXXX.jar XXXXXX.yml

这个有效:

set cmd=notepad

for /f "tokens=2 delims==; " %%a in (' wmic process call create "%cmd%" ^| find "ProcessId" ') do set PID=%%a

start cmd /k echo %pid%

PAUSE

您的 jar 文件可能有问题,或者 java 不在您的 PATH 中。直接在命令提示符处尝试 运行 您的命令,看看它是否有效:

c:\>java -jar XXXXXXX.jar XXXXXX.yml

还要确保在 cmd 中使用 jar 文件的完整路径,否则路径将相对于系统文件夹:

set cmd=java -jar c:\yourpath\XXXXXXX.jar XXXXXX.yml