中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]求一两程序判断运行和退出批处理,谢谢
作者:
标题: [求助]求一两程序判断运行和退出批处理,谢谢 上一主题 | 下一主题
29406352
初级用户





积分 43
发帖 17
注册 2005-10-28
状态 离线
『楼 主』:  [求助]求一两程序判断运行和退出批处理,谢谢

A、B为任务管理器中的两可执行文件。B运行,则A退出;B结束之后,A运行,最后A运行完之后B也无运行动作,则结束此批处理   (注:差点忘记了,A在c:\windows\temp下)

求助,HELP,万分感谢!

先谢谢zw19750516

可能我刚才我表述的还不是十分清楚,是这样的:
一开机之后就会在任务管理器中运行 c:\windows\temp\A.EXE ,此时若进程中有B.exe在运行,则退出A.exe;   若进程B.exe结束则继续运行A.exe;若AB都无,则退出批处理

谢谢,能帮改改吧???

对于你们来说,只不过是举手之劳,而对于我们这种不是很熟悉DOS命令的人就是一座山峰,顶到解决为止,谢谢

[ Last edited by 29406352 on 2008-7-5 at 05:12 PM ]

2008-6-29 18:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 2 楼』:  

请楼主自己测试吧:
@echo off
cd /d c:\windons\temp
set code=ab
:begin
set "flag="
set /a a=%random%%%2
call,set a=%%code:~%a%,1%%
call,set b=%%code:%a%=%%
taskkill /im %b%.exe /f 2>nul
start /wait %a%.exe
tasklist|findstr "a.exe">nul&&set flag=1
tasklist|findstr "b.exe">nul&&set flag=1
if not defined flag goto :eof
goto begin
[ Last edited by zw19750516 on 2008-6-29 at 07:50 PM ]



批处理之家新域名:www.bathome.net
2008-6-29 19:48
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

只要从2楼的代码里面学会怎样使用taskkill和tasklist就行了,自己改不出来?



2008-6-29 21:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
29406352
初级用户





积分 43
发帖 17
注册 2005-10-28
状态 离线
『第 4 楼』:  

简单的应用就会些,帮帮忙啊
谢谢~~~
(另:"此时不应有=%"是什么问题?)

2008-6-29 22:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
29406352
初级用户





积分 43
发帖 17
注册 2005-10-28
状态 离线
『第 5 楼』:  

..............................

2008-6-30 00:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  



  Quote:
(另:"此时不应有=%"是什么问题?)

你不会是把2楼的代码放到命令行解释器里面运行吧?



2008-6-30 00:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
29406352
初级用户





积分 43
发帖 17
注册 2005-10-28
状态 离线
『第 7 楼』:  

哪位可以帮一下啊?

2008-6-30 14:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
29406352
初级用户





积分 43
发帖 17
注册 2005-10-28
状态 离线
『第 8 楼』:  

顶到有答案为止,谢谢 、

2008-7-5 17:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ywwywwjm
初级用户





积分 42
发帖 13
注册 2007-8-3
状态 离线
『第 9 楼』:  

:loop
tasklist|find "B.exe" && taskkill /f /im A.exe 2>nul || tasklist|find "A.exe" || c:\windows\temp\A.EXE
tasklist|find "A.exe" || tasklist|find "B.exe" || exit /b
goto loop

[ Last edited by ywwywwjm on 2008-7-6 at 03:17 AM ]

2008-7-6 02:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  



  Quote:
可能我刚才我表述的还不是十分清楚,是这样的:
一开机之后就会在任务管理器中运行 c:\windows\temp\A.EXE ,此时若进程中有B.exe在运行,则退出A.exe;   若进程B.exe结束则继续运行A.exe;若AB都无,则退出批处理

开机运行a.exe:一是将a.exe拖入到开始菜单的启动文件夹中去,二是将a.exe加入系统启动项中去(msconfig),三是建立计划任务:
schtasks /create /ru system /tn test /tr c:\windows\temp\a.exe /sc onstart
批处理代码如下:
@echo off
:again
tasklist|findstr /i "b.exe">nul&&taskkill /im a.exe /f||start "" "c:\windows\temp\a.exe"
tasklist|findstr /i "a.exe">nul||tasklist|findstr /i "b.exe">nul||goto :eof
goto again
[ Last edited by zw19750516 on 2008-7-6 at 11:26 AM ]



批处理之家新域名:www.bathome.net
2008-7-6 11:23
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: