批处理 time (判断时间段)

2024年11月28日 19:05
有3个网友回答
网友(1):

@echo off
::开启Schedule服务,以便使用at命令
sc config Schedule start= demand
net start schedule
::获取系统时间,剔除秒,并赋值给变量%dr%
set dr=%time:~0,-5%
::去掉时间中的冒号,直接比较时间
set str=%dr::=%
if %str% leq 1235 (goto noon) else (
if %str% leq 1830 (goto afternoon) else (
goto night
)
)

:noon
at 12:35 shutdown -s -t 1
echo 您好!电脑会在12:35自动关机,请自行安排好时间!
echo 祝您玩得愉快!
pause
exit
:afternoon
at 18:30 shutdonw -s -t 1
echo 您好!电脑会在18:30自动关机,请自行安排好时间!
echo 祝您玩得愉快!
pause
exit
:night
at 23:30 shutdown -s -t 1
echo 您好!电脑会在23:30自动关机,请自行安排好时间!
echo 祝您玩得愉快!
pause
exit

另有个时间段23:30-00:00被包含在noon时间段里,如果要单独隔开,可能代码还需修改,且麻烦太多。

PS:解释的很粗糙,LZ如果看不懂的话可以百度HI我,以上代码仅在window xp 上测试通过。

网友(2):

时间变量为%time%但是带了分了3段,你可以用SET变脸把他提出来比较啊,只比分钟和小时就行,你echo %time%
看看还可以用for提取当前时间分段提出来

网友(3):

首先,用 cmd /v:on 或 cmd /von 启动 cmd ,启用延迟扩充,可以用叹号引用变量,详细用法:
cmd /
set /
setlocal /

1. %time::=% 是把变量 time 中的 : 替换为空,就是去掉冒号,详细用法 set /
2. set t=%time::=% &echo !t:.=!
3. set t=%time::=-% &echo !t:.=-!