中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-10 20:55
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何用批处理获取指定程序进程的PID 查看 1,587 回复 14
楼 主 [求助]如何用批处理获取指定程序进程的PID 发表于 2008-12-01 21:52 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
(代码需要在Win2000下运行!)

如何用批处理获取指定程序进程的PID

[ Last edited by ruisoft on 2008-12-3 at 17:19 ]
2 发表于 2008-12-01 21:54 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
3 发表于 2008-12-01 23:34 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
tasklist 只能在WINXP以上系统使用!
4 发表于 2008-12-01 23:37 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
只能在XP下使用?为何不把你的系统环境一次性在顶楼说清楚。。。^_^
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
5 发表于 2008-12-01 23:49 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
sorry!sorry!
心急,把应用环境漏了。^_^

sorry!sorry!
6 发表于 2008-12-02 00:13 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
如果WMIC 和tsaklist命令不可以用,可以尝试用vbs、

Dim ins,objProcess,OneProcess
ins=InputBox("指定进程名")

set objProcess=GetObject("winmgmts:\\.\root\cimv2")
set OneProcess=objProcess.execquery("select * from win32_process")
for each i in OneProcess
if lcase(i.name)=lcase(ins) then
msgbox i.processID
end if
next


[ Last edited by huahua0919 on 2008-12-2 at 06:18 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lxmxn +4 2008-12-02 03:14
7 To huahua0919: 发表于 2008-12-02 03:16 ·  中国 湖北 武汉 联通
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
建议这样:if lcase(i.name)=lcase(ins) then
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
huahua0919 +5 2008-12-02 06:15
8 发表于 2008-12-02 09:09 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
版主能否讲细一些,好吗?

建议这样:if lcase(i.name)=lcase(ins) then
9 发表于 2008-12-02 09:15 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
对 VBS 不深,如何在BAT文件中调用下面的值?

msgbox i.processID
10 发表于 2008-12-02 11:36 ·  中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
Originally posted by ruisoft at 2008-12-2 09:15 AM:
对 VBS 不深,如何在BAT文件中调用下面的值?

msgbox i.processID


改为
wsh.echo i.processID

---------------
在批处理中:(假设此vbs名为p.vbs)

for /f %%a in ('cscript //nologo p.vbs') do echo %%a
11 发表于 2008-12-02 12:22 ·  中国 广西 南宁 电信
中级用户
★★
积分 252
发帖 56
注册 2003-12-29 00:00
22年会员
UID 14605
性别 男
状态 离线
不过貌似进程每一次的PID值都不一样哦
12 发表于 2008-12-02 16:08 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
进程PID值会随着程序的每一次启动而不同。

因此,在重启程序之前,先把运行的程序进程终止。

这样就可以保证机器中有只有一个程序对应的进程运行。
13 发表于 2008-12-02 16:59 ·  中国 黑龙江 大庆 大庆中基石油通信建设有限公司
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
目前系统都支持WMIC吧,试试这个,我这个也是向这里的朋友请教尝试得来的:

set /p fteding= 请输入要查找的进程
wmic process get caption,processid >c:\temp\jincheng1.txt
type c:\temp\jincheng1.txt | findstr /i "^%fteding%"
14 发表于 2008-12-02 17:41 ·  中国 云南 丽江 古城区 电信
初级用户
★★
积分 93
发帖 57
注册 2007-03-12 12:04
19年会员
UID 81503
性别 男
状态 离线
Originally posted by tempuser at 2008-12-2 04:59 PM:
目前系统都支持WMIC吧,试试这个,我这个也是向这里的朋友请教尝试得来的:

set /p fteding= 请输入要查找的进程
wmic process get caption,processid > ...


哦!高手,能讲详细些吗?

WMIC ??? !!!
15 发表于 2008-12-02 20:59 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
你的代码需要在Win2000下运行?如果是的话,建议在顶楼描述清楚。
论坛跳转: