循环中的 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
我正在尝试检索通过批处理文件启动的 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