我正在处理应该启动进程(CMD)的批处理文件,然后在完成后应该终止该进程。问题是Imagename是cmd.exe,另一个问题是它应该在Jenkins上运行。 这是我测试过的:
我无法理解wmic的工作原理,但正如我所见,我无法使用START命令之类的命令来启动进程。
条件:
一段时间后无法杀死它,因为我需要从 mergetool有时可能会花费太长的时间。
它应该与其他(cmd)进程同时运行// // Jenkins
我的问题是,有没有办法从START命令中获取PID?
有些问题对我有很大帮助! Windows batch file : PID of last process? Compare number of a specific process to a number
代码:
{{1}}
答案 0 :(得分:1)
您实际上可以依靠文件start
和task-before.txt
来使用findstr
来检查在task-after.txt
命令行之后添加了哪些任务:
findstr /LXVG:task-before.txt task-after.txt
由于nasty bug,在某些情况下可能会导致意外输出。为防止这种情况,如果可以接受不区分大小写的搜索,请添加/I
选项:
findstr /ILXVG:task-before.txt task-after.txt
答案 1 :(得分:0)
是的,这很有可能。我将从以前的awnser的代码中获取另一个文章:Stop Execution of Batch File after 20 Seconds and move to Next
我首先要假设“ mergetool_w”是您要与start
一起使用的CMD的名称...
您要进行此操作的方法是在tasklist
中搜索控制台标题,然后从上下文中提取PID#
。后缀find
可与tokens=2
一起用于“过滤”结果,以仅提取PID#
。
FOR /F "tokens=2" %%# in ('tasklist /v ^| find "mergetool_w"') do set PID=%%#
现在,您可以使用taskkill /pid
命令在此终止新窗口。 PID#
存储在字符串%PID%
中,因此命令很简单:
taskkill /pid %PID% /t /f
最后,似乎您正在尝试“记录”数据,因此可以随时将> text-task.txt
放在需要的地方。