【发布时间】:2018-08-01 16:02:32
【问题描述】:
我正在处理一个批处理文件,该文件应该启动一个进程 (CMD),然后它应该在完成后终止该进程。问题是,Imagename 是 cmd.exe,另一个问题是它应该在 Jenkins 上运行。 这是我测试过的:
- 使用窗口名称通过 wmic 获取 PID 以查找进程 -> Jenkins 失败
- Taskkill 通过命名窗口-> 失败,因为 Jenkins 没有 由于安全问题而显示窗口。
- Taskkill by imagename -> 失败,因为有其他 cmd 进程 同时运行
- Taskkill 使用 pid 但 pid 来自最后一个 cmd 启动。 - 工作,但它是 不是很安全。
我无法理解 wmic 的工作原理,但正如我所见,我无法使用 START 命令之类的命令启动进程。
条件:
一段时间后无法杀死它,因为我需要从 合并工具,有时合并工具可能需要很长时间。
它应该与其他 (cmd) 进程同时运行 // Jenkins
我的问题,有没有办法从 START 命令中获取 PID?
这里有一些对我有很大帮助的问题! Windows batch file : PID of last process? Compare number of a specific process to a number
代码:
set "console_name=cmd.exe"
set "git_command=%gitcmd% mergetool ^>output.txt"
tasklist /FI "imagename eq %console_name%" /NH /FO csv > task-before.txt
START "mergetool_w" CMD /c %git_command%
tasklist /FI "imagename eq %console_name%" /NH /FO csv > task-after.txt
for /f "delims=, tokens=2,*" %%A in ('fc /L /LB1 task-before.txt task-after.txt') do set pid=%%A
pid=!pid:"=!
echo pid is %pid%
TASKKILL /t /pid %pid% /f
【问题讨论】:
标签: windows git batch-file jenkins