Узнать идентификатор процесса nunit конкретного экземпляра - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть три пакетных файла, каждый из которых открывает один экземпляр NUnit.Я хочу убить конкретный экземпляр NUnit, когда тесты будут завершены.Я могу получить три идентификатора процесса для трех NUnit экземпляров.

Но есть ли способ узнать, какой идентификатор процесса соответствует экземпляру Nunit?

Проверьте изображение ниже.

enter image description here

Здесь он показывает мне идентификатор процесса.Но не могу распознать, какой для какого экземпляра.

Вот мой код в пакете для уничтожения NUnit идентификатора процесса.

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.

1 Ответ

0 голосов
/ 27 ноября 2018

Ваша лучшая ставка, вероятно, отличает nunit процессы, когда они запускаются.

Можно получить PID процесса, запущенного через WMIC:

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 create "

...