【发布时间】:2018-11-26 11:31:22
【问题描述】:
我有三个批处理文件,每个打开一个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 实例。
【问题讨论】:
-
for 循环将用所有找到的 nunit PID 覆盖 PID,因此只有最后一个仍然存在。在 if 代码块中 taskkill 只会杀死最后一个 PID。
-
为什么不检查每个实例前后的 PID? 然后您可以在决定杀死哪个实例之前确定哪个 PID 属于哪个实例。
标签: batch-file nunit taskkill