[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解決]批处理start程序后如何获取这个PID并taskkill 这个PID

例如:start iexplore 后获取这个IE的PID值
用 tasklist /fi "IMAGENAME eq iexplore.exe" 可以判断PID

但是经常会开多个IE ,如何判断那个PID是start iexplore 的
然后用 taskkill  /f /pid     结束这个进程
taskkill /f /im iexplore.exe是不能用的会关闭掉所有IE进程。

自己没思路,拜托各位了,谢谢~~

[ 本帖最后由 qaz123654 于 2009-8-21 13:01 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2

通过窗口标题判断,但是也会有重复的时候。。。

最好的办法就是用vbs,可以直接返回pid。。。
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

  1. @echo off
  2. for /f "tokens=2" %%a in ('tasklist^|findstr /i "iexplore.exe"') do echo %%a>>keep.txt
  3. start "" iexplore.exe
  4. for /f "tokens=2" %%a in ('tasklist^|findstr /i "iexplore.exe"') do echo %%a>>com.txt
  5. for /f %%a in (com.txt) do findstr %%a keep.txt||taskkill /pid:%%a
  6. pause
复制代码

[ 本帖最后由 Lumiere 于 2009-8-21 12:40 编辑 ]
Still with wax

TOP

start 没有这个功能,只在启动命令行程序(如cmd、ping、bat)时可以指定窗口标题。
可以用wmic运行程序再用for截取pid
  1. @echo off
  2. for /f "tokens=1,2 delims==; " %%a in ('wmic process call create '"C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE" "http://www.bathome.net"'^|find /i "ProcessId"') do set %%a=%%b
  3. echo %ProcessId%
  4. pause
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

回复 2楼 的帖子

用VBS?
能不能给个代码看下,谢谢

TOP

回复 5楼 的帖子

  1. set ws=CreateObject("WScript.Shell")
  2. set oexec=ws.exec("C:\Program Files\Internet Explorer\IEXPLORE.EXE")
  3. wsh.echo oexec.processid
复制代码
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

批处理并非万能的。
隔时间扫描IE进程,记录IE的PID,当有新的PID时把它挑选出来。

TOP

  1. @echo off
  2. for /f "skip=3 tokens=2" %%a in ('tasklist /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "imagename eq iexplore.exe"') do echo %
  3. %a >>tasklist0.txt
  4. start "" iexplore.exe
  5. for /f "skip=3 tokens=2" %%a in ('tasklist /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "imagename eq iexplore.exe"') do echo %
  6. %a >>tasklist1.txt
  7. for /f "skip=3 delims=*" %%a in ('fc tasklist0.txt  tasklist1.txt') do (ping n 5 127.0.1>nul & taskkill /pid  %%a)
  8. del tasklist0.txt,tasklist1.txt
  9. pause
复制代码

[ 本帖最后由 cjiabing 于 2009-8-21 13:34 编辑 ]

TOP

还是斑竹厉害啊,
谢谢各位了

TOP

原帖由 cjiabing 于 2009-8-21 12:46 发表
批处理并非万能的。
隔时间扫描IE进程,记录IE的PID,当有新的PID时把它挑选出来。

居然真这么做了...强悍的...这效率是不是低了点....

TOP

启动前获取一次,启动后立即获取一次,判断不同即可。除非你的系统又同时启动了一个………………

TOP

返回列表