中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 22:06
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]停止程序
可打印版本  1,056 / 2
第1楼 coldface 发表于 2010-08-14 23:26
初级用户 发帖 70 积分 71
[求助]停止程序
游戏安装目录都放在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楼 wangyang331407 发表于 2010-08-21 20:39
初级用户 发帖 28 积分 28
if errorlevel 1 del /q Tasklist.txt&goto end
if errorlevel 0 del /q Tasklist.txt&goto kill
好像是这样的。
第3楼 doshsyy 发表于 2010-08-22 13:05
新手上路 发帖 15 积分 19
我设的路径是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变量只是以是否有游戏进程来控制回显的,没什么作用。不要被我弄糊涂了。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023