Board logo

标题: [求助]停止程序 [打印本页]

作者: coldface     时间: 2010-8-14 23:26    标题: [求助]停止程序

游戏安装目录都放在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%
)
但是好像上面的不生效,谁帮忙指下错?
谢谢!
作者: wangyang331407     时间: 2010-8-21 20:39
if errorlevel 1 del /q Tasklist.txt&goto end
if errorlevel 0 del /q Tasklist.txt&goto kill
好像是这样的。
作者: doshsyy     时间: 2010-8-22 13:05
我设的路径是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变量只是以是否有游戏进程来控制回显的,没什么作用。不要被我弄糊涂了。