从命令行启动进程时如何捕获进程的PID?

Nic*_*ick 10 cmd pid process

有没有办法纯粹在.bat文件中执行此操作?

目的是启动iexplore.exe,然后在完成时杀死该实例.

kyb*_*kos 10

这是我使用的:

@echo off

rem there is a tab in the file at the end of the line below
set tab=    
set cmd=javaw -jar lib\MyProg.jar
set dir=%~dp0

echo Starting MyProg
set pid=notfound

for /F "usebackq tokens=1,2 delims=;=%tab% " %%i in (
    `wmic process call create "%cmd%"^, "%dir%"`
) do (
    if /I %%i EQU ProcessId (
        set pid=%%j
    )
)

echo %pid% > MyProg.pid
Run Code Online (Sandbox Code Playgroud)

该目录设置为cmd文件所在的目录.更改dir为更改该目录.修改cmd以更改运行的命令.

如果你想要一个杀死它的stop.cmd,它会是这样的

@echo off
for /F %%i in (%~dsp0MyProg.pid) do taskkill /F /PID %%i
del %~dsp0MyProg.pid
Run Code Online (Sandbox Code Playgroud)


Kir*_*tan 1

嗯,TaskListTaskKill?!

  • 所以我有 7 个 Iexplore 进程,并启动另一个进程。我如何在启动时捕获该 PID? (4认同)
  • 你不能在启动任务列表之前和之后做一个任务列表,比较它们并获取你的 PID 吗?-- 我知道这不是最简单的方法,但我不知道仅使用一些常规 Windows 脚本来完成此操作的好方法。 (3认同)