中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 22:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]求一两程序判断运行和退出批处理,谢谢
楼 主 [求助]求一两程序判断运行和退出批处理,谢谢 发表于 2008-06-29 18:42 ·  中国 广西 南宁 电信
初级用户
积分 43
发帖 17
注册 2005-10-28 15:02
UID 44208
状态 离线
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 ]
2 发表于 2008-06-29 19:48 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
请楼主自己测试吧:

@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
3 发表于 2008-06-29 21:29 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
只要从2楼的代码里面学会怎样使用taskkill和tasklist就行了,自己改不出来?
4 发表于 2008-06-29 22:13 ·  中国 广西 南宁 电信
初级用户
积分 43
发帖 17
注册 2005-10-28 15:02
UID 44208
状态 离线
简单的应用就会些,帮帮忙啊
谢谢~~~
(另:"此时不应有=%"是什么问题?)
5 发表于 2008-06-30 00:04 ·  中国 广西 南宁 电信
初级用户
积分 43
发帖 17
注册 2005-10-28 15:02
UID 44208
状态 离线
..............................
6 发表于 2008-06-30 00:21 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
(另:"此时不应有=%"是什么问题?)

你不会是把2楼的代码放到命令行解释器里面运行吧?
7 发表于 2008-06-30 14:13 ·  中国 广西 南宁 电信
初级用户
积分 43
发帖 17
注册 2005-10-28 15:02
UID 44208
状态 离线
哪位可以帮一下啊?
8 发表于 2008-07-05 17:12 ·  中国 广西 南宁 电信
初级用户
积分 43
发帖 17
注册 2005-10-28 15:02
UID 44208
状态 离线
顶到有答案为止,谢谢 、
9 发表于 2008-07-06 02:40 ·  中国 广东 江门 联通
初级用户
积分 42
发帖 13
注册 2007-08-03 23:26
UID 94610
性别 男
状态 离线
: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 ]
10 发表于 2008-07-06 11:23 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
UID 112398
性别 男
状态 离线
可能我刚才我表述的还不是十分清楚,是这样的:
一开机之后就会在任务管理器中运行 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
论坛跳转: