中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 22:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]停止程序 查看 1,058 回复 2
楼 主 [求助]停止程序 发表于 2010-08-14 23:26 ·  中国 江苏 苏州 电信
初级用户
★★
积分 71
发帖 70
注册 2010-07-19 11:51
16年会员
UID 170757
性别 男
状态 离线
游戏安装目录都放在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%
)
但是好像上面的不生效,谁帮忙指下错?
谢谢!
2 发表于 2010-08-21 20:39 ·  中国 上海 杨浦区 电信
初级用户
积分 28
发帖 28
注册 2010-07-28 11:06
16年会员
UID 171355
性别 男
状态 离线
if errorlevel 1 del /q Tasklist.txt&goto end
if errorlevel 0 del /q Tasklist.txt&goto kill
好像是这样的。
3 发表于 2010-08-22 13:05 ·  中国 浙江 杭州 电信
新手上路
积分 19
发帖 15
注册 2010-08-20 13:09
15年会员
UID 172706
性别 男
状态 离线
我设的路径是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变量只是以是否有游戏进程来控制回显的,没什么作用。不要被我弄糊涂了。
论坛跳转: