有人能告诉我我需要在 [X] 中写入什么才能让 Maplestory.exe 进程在启动时被终止吗?我不想使用计时命令,谢谢!(导致gamelauncher.exe
运行maplestory.exe
)
@echo off
start D:\Games\MapleStory\GameLauncher.exe
[X]
taskkill /im MapleStory.exe
exit
答案1
我会将输出从tasklist
导入find
,搜索maplestory
,然后使用IF
语句和GOTO
继续循环,检查该进程,直到找到它。一旦找到它,您就可以从GOTO
不同的点终止该任务。
像这样的事情应该可以解决问题:
:search
tasklist|find "maple"
IF %ERRORLEVEL% == 0 GOTO :found
TIMEOUT /T 1
GOTO :search
:found
taskkill /im maplestory.exe
(该TIMEOUT
命令将脚本暂停 1 秒。这将有助于防止它在不断运行该循环时消耗过多的 CPU。)
答案2
为什么必须运行任何东西?您可以随时尝试终止该过程,然后在成功(&&
操作符)或失败(||
操作符)时采取行动。您可以简单地通过 GOTO 循环,直到取得成功。
@echo off
start D:\Games\MapleStory\GameLauncher.exe
:killMapleStory
taskkill /im MapleStory.exe >nul 2>nul || goto killMapleStory
exit
您可能想在循环中引入 1 秒延迟以节省 CPU 资源。MapleStory 的运行时间绝不会超过 1 秒。
@echo off
start D:\Games\MapleStory\GameLauncher.exe
:killMapleStory
timeout /t 1 /nobreak >nul
taskkill /im MapleStory.exe >nul 2>nul || goto killMapleStory
exit
答案3
@nhinkle,不得不在我的 Win7 64 位系统上稍微修改一下语法。
:search
tasklist|find "maplestory.exe"
IF %ERRORLEVEL% == 0 GOTO :found
TIMEOUT /T 1
GOTO :search
:found
TIMEOUT /T 3
taskkill /IM maplestory.exe
exit
答案4
powershell -windowstate hidden
:9
tasklist /fi "imagename eq Chrome.exe" /fi "CpuTime gt 00:00:20" > Uit5.dat & findstr "INFO" uit5.dat >NUL & if errorlevel 1 (choice /d y /t 2|choice /d y /t 2)
goto :9
REM you could write to a file, and check if the criteria "INFO" is not present, therefore your original criteria is true. For Example You use the criteria chrome with CPU time greater than 20 seconds and make your computer beep when the criteria is existing.
或者更普遍地
powershell -windowstate hidden exit
:9
tasklist /fi "imagename eq %1" /fi "CpuTime gt %2" > Uit5.dat & findstr "INFO" uit5.dat >NUL & if errorlevel 1 goto :8
goto :9
:8
exit