首页 > 解决方案 > 找出特定实例的 nunit 的进程 ID

问题描述

我有三个批处理文件,每个打开一个NUnit. 我想杀死NUnit测试完成时的特定实例。我能够获取三个NUnit实例的三个进程 ID。

但是有没有办法找出哪个 processId 对应于哪个 Nunit 实例?

检查下面的图像。

在此处输入图像描述

这里它显示了我的进程 ID。但无法识别哪个是哪个实例。

这是我用于杀死NUnit进程ID的批处理代码。

for /F "tokens=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq nunit.exe"') do (
SETLOCAL ENABLEDELAYEDEXPANSION
set PID=%%b
echo PID StartRun_XXX=!PID!)

::echo before loop 
:: Check for TestResult.xml file generation. 
:: at the moment when TestResult.xml generated, kill the NUNIT instance and subsequently call OverViewGenerator.bat to generate TestResult.htm


pause
:loop
if exist %~dp0TestResult_%TestCategory%_%TimeStamp%.xml (
    cd %~dp0
    echo ====================inside if exist------dp0=%~dp0===================
    pause
    echo PID=!PID!
    taskkill /PID !PID! /T

此代码突然杀死任何 nunit 实例。

标签: batch-filenunittaskkill

解决方案


您最好的选择可能nunit是在启动时区分进程。

可以获取通过 WMIC 启动的进程的 PID:

set "tab="  <<<<<<<<<<<< PLEASE insert TAB after '=' 
set "pid="
for /F "usebackq tokens=1,2 delims=;=%tab% " %%i in (           
     `wmic process call create "nunit.exe"^, "C:\working\dir"`
) do if %%j gtr 0 set pid=%%j

(从这个答案复制)

然后您可以将PID保存到文件中

echo set "PID=%pid%" >yourfile.bat

要终止进程,只需运行脚本以获取变量

call yourfile.bat
taskkill /pid %pid%
taskkill /f /pid %pid%
del /y yourfile.bat

另请参阅:如何获取“wmic process call create”的输出


推荐阅读