window脚本 自定义倒计时时间,弹窗提醒。
脚本代码
@echo off
color 0a
:onceAgain
set /p inputTime=请输入计时时间(分钟):
set /p inputString=请输入提醒内容:
set baseTime=%time:~0,8%
echo 定时时间%inputTime%分钟
::PAUSE
REM convert from string to number
set /a baseHour=%baseTime:~0,2%
set /a baseMinute=%baseTime:~3,2%
set baseSecond=%baseTime:~6,2%
::echo 当前时间: %baseHour%:%baseMinute%:%baseSecond%
::PAUSE
REM calculate set time
set /a setSecond=%baseSecond%
set /a inputMinute=%inputTime%
set /a setMinute=%baseMinute%+%inputMinute%
set /a setHour=%baseHour%
::echo 累加至%setMinute%分钟,设定时间:%setHour%:%setMinute%:%setSecond%
REM If minutes out of range(60 Min * 24), return
if %setMinute% GEQ 1440 (
echo 暂未支持计时超出一天,一条时间:1440分钟,计时时间:%setMinute%分钟
goto onceAgain
) else if %setMinute% EQU 0 (
echo 定时0分钟,由于baseTime 和 currentTime取值有时间差,可能出现0分钟定时失败
)
:balanceTime
if %setMinute% GEQ 60 (
echo %setMinute%大于60
set /a setHour=%setHour%+1
set /a setMinute=%setMinute%-60
if %setHour% GEQ 24 (
set /a setHour=%setHour%-24
echo 时间反转:24点->0点
)
goto balanceTime
)
REM record reminde time
REM if setHour=5, change it to 05
if %setHour% LSS 10 (
set setHour=0%setHour%
)
if %setMinute% LSS 10 (
set setMinute=0%setMinute%
)
if %setSecond% LSS 10 (
set setSecond=0%setSecond%
)
set remindedTime=%setHour%:%setMinute%:%setSecond%
echo remindedTime:%remindedTime%
echo.
::used to print log every 1s
set oldSecond=66
:waitForTimeUp
set currentTime=%time:~0,8%
set currentSecond=%currentTime:~6,2%
REM print log every 1s
if not "%oldSecond%" == "%currentSecond%" (
set oldSecond=%currentSecond%
echo 当前时间%currentTime%,提醒时间 %remindedTime%
)
REM judge if time up
if "S%currentTime%" == "S%remindedTime%" (
echo 定时时间到
) else (
goto waitForTimeUp
)
REM save log
echo [%date% %currentTime%] 从 %baseTime% 开始,定时 %inputTime% 分钟时间到。 提醒内容: %inputString% >> reminder.log
REM Dialog
(echo [%date% %currentTime%] 从 %baseTime% 开始,定时 %inputTime% 分钟时间到。
echo 提醒内容:%inputString%)|msg %username% /w
cls & goto onceAgain
如果window执行bat脚本显示中文乱码
如果window执行bat脚本显示中文乱 添加字体格式
CHCP 65001>nul