中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]停止程序 上一主题 | 下一主题
coldface
初级用户





积分 71
发帖 70
注册 2010-7-19
状态 离线
『楼 主』:  [求助]停止程序

游戏安装目录都放在d:\test下,查找此目录下所有exe,如果在进程中,则终止。
@echo off
tasklist >Tasklist.txt
for /f "delims=" %%i in ('dir "D:\test\*.EXE" /b /s') do echo %%i >>Game.txt
for /f "tokens=3 delims=\" %%k in (Game.txt) do (
set str=%%k
find /i Tasklist.txt "%str%"                                 
if errorlevel 1 ((del /q Tasklist.txt)&(goto end))
if errorlevel 0 ((del /q Tasklist.txt)&(goto kill))
:end  
Echo "The game is not running"
exit
:kill
ntsd -c q -pn %str%
)
但是好像上面的不生效,谁帮忙指下错?
谢谢!

2010-8-14 23:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wangyang331407
初级用户





积分 28
发帖 28
注册 2010-7-28
状态 离线
『第 2 楼』:  

if errorlevel 1 del /q Tasklist.txt&goto end
if errorlevel 0 del /q Tasklist.txt&goto kill
好像是这样的。

2010-8-21 20:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
doshsyy
新手上路





积分 19
发帖 15
注册 2010-8-20
状态 离线
『第 3 楼』:  

我设的路径是F:\Games,你要改为D:\test。
还有建议看下设置变量延迟(setlocal enabledelayedexpansion),你的批处理里面的变量不太对,没有开启变量延迟。一定要弄懂,不然没法用for。
@echo off&setlocal enabledelayedexpansion
set is=0
tasklist>Tasklist.txt
for /R F:\Games %%e in (*.exe) do (
find "%%~ne" Tasklist.txt>>ruslt.txt
)
for /f "eol=- tokens=1delims= " %%r in (ruslt.txt) do (
del /q Tasklist.txt&del /q ruslt.txt&taskkill /IM %%r&echo.Kill %%r successful!&set is=1&pause
)
if !is!==0 del /q Tasklist.txt&del /q ruslt.txt&echo."The game is not running!"&pause
is变量只是以是否有游戏进程来控制回显的,没什么作用。不要被我弄糊涂了。

2010-8-22 13:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: