找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35902|回复: 11

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

[复制链接]
发表于 2009-8-21 11:49:56 | 显示全部楼层 |阅读模式
例如: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 编辑 ]

评分

参与人数 1PB +2 收起 理由
keen + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-8-21 12:19:52 | 显示全部楼层
通过窗口标题判断,但是也会有重复的时候。。。

最好的办法就是用vbs,可以直接返回pid。。。
发表于 2009-8-21 12:27:25 | 显示全部楼层
  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 编辑 ]
发表于 2009-8-21 12:31:31 | 显示全部楼层
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
复制代码
 楼主| 发表于 2009-8-21 12:38:47 | 显示全部楼层

回复 2楼 的帖子

用VBS?
能不能给个代码看下,谢谢
发表于 2009-8-21 12:42:22 | 显示全部楼层

回复 5楼 的帖子

  1. set ws=CreateObject("WScript.Shell")
  2. set oexec=ws.exec("C:\Program Files\Internet Explorer\IEXPLORE.EXE")
  3. wsh.echo oexec.processid
复制代码
发表于 2009-8-21 12:46:39 | 显示全部楼层
批处理并非万能的。
隔时间扫描IE进程,记录IE的PID,当有新的PID时把它挑选出来。
发表于 2009-8-21 12:52:29 | 显示全部楼层

  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 编辑 ]
 楼主| 发表于 2009-8-21 12:58:35 | 显示全部楼层
还是斑竹厉害啊,
谢谢各位了
发表于 2009-9-22 20:35:34 | 显示全部楼层
原帖由 cjiabing 于 2009-8-21 12:46 发表
批处理并非万能的。
隔时间扫描IE进程,记录IE的PID,当有新的PID时把它挑选出来。

居然真这么做了...强悍的...这效率是不是低了点....
发表于 2010-11-2 08:44:05 | 显示全部楼层
启动前获取一次,启动后立即获取一次,判断不同即可。除非你的系统又同时启动了一个………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:47 , Processed in 0.030531 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表