中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-27 12:22
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 在批处理中如何关闭由批处理打开的程序? 查看 6,971 回复 21
16 发表于 2006-11-16 03:49 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
wmic 也是根据进程名结束的
17 发表于 2006-11-16 14:02 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
3742668 版主的方法我试着换了其它程序,把记事本换成了 curl (上传文件),换成了播放器(播放视频)。但我都没试成功。(我不懂 WMIC ,可能是我不会用,用错了。不知应该如何使用。)

@echo off
set /p str=输入程序名(空格加引号):
for /f "tokens=2 delims==;" %%i in ('wmic process call create %str% ^| findstr /i "ProcessId"') do @set /a x=%%i
echo 由本脚本启动的%str%进程的pid为:%x%
pause

wmic 也是根据进程名结束的

不仅wmic可以通过多种属性识别进程,单是taskkill就可以通过多种属性结束指定进程,就连ntsd在XP中都可以分别通过pid和imagename来结束指定进程。

ntsd -c q -p %pid%
ntsd -c -q -pn %imagename%
taskkill /fi "pid eq/ne/gt/lt/ge/le %pid%"
taskkill /im %imagename%
taskkill /pid %pid%
wmic process where "processid='%pid%'" call Terminate
wmic process where "name='%imagename%'" call Terminate
wmic path win32_process.name="%imagename%" call Terminate
wmic path win32_process.processid="%pid%" call Terminate
...
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
lxmxn +3 2006-11-16 16:54
voiL +3 2006-11-18 12:00
NaturalJ0 +5 2006-11-20 21:20
18 发表于 2006-11-18 12:01 ·  中国 广东 深圳 深圳坂田数据中心BGP多线
中级用户
★★
积分 384
发帖 189
注册 2005-10-19 13:12
20年会员
UID 43709
性别 男
状态 离线
Originally posted by 3742668 at 2006-11-16 14:02:

@echo off
set /p str=输入程序名(空格加引号):
for /f "tokens=2 delims==;" %%i in ('wmic process call create %str% ^| findstr /i "ProcessId"') do @set ...


好家伙,之前已经领教过3742668版主的wmic了,想不到这一次又是wmic,看来得好好学学wmic才行.
19 发表于 2006-11-18 12:37 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
3742668版主的代码是否可以修改成打开文件, 如果只是打开程序有点美中不足.
业精于勤而荒于嬉,形成于思而毁于随。
20 发表于 2006-11-20 13:59 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
3742668版主的代码是否可以修改成打开文件, 如果只是打开程序有点美中不足.

当然可以,只要把create后面的命令用“cmd /c start "的格式来替换就行了,然后在结束进程的时候不能用processid=%pid%来结束,而是用上面提到过的parentprocessid来解决,因为cmd /c运行后会自动退出,而当时获得的pid为cmd的pid,是被启动的进程的父进程。
21 发表于 2006-11-20 21:37 ·  中国 江苏 苏州 联通
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
19年会员
UID 60484
状态 离线
发个图
附件
cmd.JPG
22 发表于 2006-12-05 03:21 ·  IANA 局域网IP(Private-Use)
初级用户
★★
积分 136
发帖 59
注册 2006-06-02 16:05
20年会员
UID 56438
状态 离线
有点麻烦,有没有简单的?
论坛跳转: