Board logo

标题: [求助]求一两程序判断运行和退出批处理,谢谢 [打印本页]

作者: 29406352     时间: 2008-6-29 18:42    标题: [求助]求一两程序判断运行和退出批处理,谢谢

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 ]
作者: bat-zw     时间: 2008-6-29 19:48
请楼主自己测试吧:
@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 ]
作者: HAT     时间: 2008-6-29 21:29
只要从2楼的代码里面学会怎样使用taskkill和tasklist就行了,自己改不出来?
作者: 29406352     时间: 2008-6-29 22:13
简单的应用就会些,帮帮忙啊
谢谢~~~
(另:"此时不应有=%"是什么问题?)
作者: 29406352     时间: 2008-6-30 00:04
..............................
作者: HAT     时间: 2008-6-30 00:21


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

你不会是把2楼的代码放到命令行解释器里面运行吧?
作者: 29406352     时间: 2008-6-30 14:13
哪位可以帮一下啊?
作者: 29406352     时间: 2008-7-5 17:12
顶到有答案为止,谢谢 、
作者: ywwywwjm     时间: 2008-7-6 02:40
: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 ]
作者: bat-zw     时间: 2008-7-6 11:23


  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 ]