说点体外话,论坛很好,就是网通的用户访问太卡了,昨天硬是没回复上去
ivor太细心了,我直接跳出去然后执行计时部分到时间后直接关机了
这是我的完整代码,水平有限见笑了
开机的时候运行qidong.bat,如果时间间隔大于30分钟,跳入nogame部分,每隔一段时间检测进程是否存在游戏进程,如果有则开始计时,30分钟后,开始执行关机操作并且写入结束时的时间日期,配合开机qidong.bat,防止重新启动后再玩
nogame.bat 部分- @echo off
-
- ::判断进程内是否含有game.txt里面的进程,如果有进入over
- :loop
- for /f "tokens=1 delims=," %%i in ('tasklist /fo csv ^| findstr /v "映"') do (
- for /f "delims=" %%a in (game.txt) do (
- if %%a EQU %%~i goto over
- )
- )
- ::判断进程内是否含有game.txt里面的进程,如果有进入over
- ping -n 1 -w 300000 127.255.255.255
- goto loop
-
- :over
- ::开始计时,指定时间后进行操作
- ping -n 1 -w 1800000 127.255.255.255
- setlocal enabledelayedexpansion
- set a=%time:~3,2%
- set b=%time:~,2%
- set /a nowtime=%a%+%b%*60
- echo %nowtime% > shijian.txt
- set c=%date:~,10%
- echo %c% > riqi.txt
- shutdown -s -t 10
- echo 10秒后关机
- pause
复制代码 启动检测部分qidong.bat- @echo off
- set a=%date:~,10%
- for /f "tokens=*" %%b in (riqi.txt) do ( set c=%%b)
- if %a%==%c% (goto shijian) else (goto nogame)
-
- :shijian
- rem 时间判断,上次时间超过1个小时,可以继续玩游戏,否则退出,关机
- setlocal enabledelayedexpansion
- set d=%time:~3,2%
- set e=%time:~,2%
- set /a nowtime=%d%+%e%*60
- for /f "tokens=*" %%f in (shijian.txt) do (set lasttime=%%f)
- set /a h=%nowtime%-%lasttime%
- if %h% gtr 30 ( GOTO NOGAME) else ( goto shut)
-
-
- :NOGAME
- NOGAME.BAT
-
- :shut
- echo 2次玩游戏间隔必须在30分钟以上,10秒后系统关机
- ping -n 1 -w 5000 127.255.255.255
- shutdown -s -t 10
- exit
复制代码
|