吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1310|回复: 2
收起左侧

[其他原创] Bat脚本-简易番茄定时器

[复制链接]
androllen 发表于 2023-6-14 22:50
本帖最后由 androllen 于 2023-8-5 18:26 编辑

说明:
这是一款方便及时提醒定时任务,而且不需要安装任何软件,绿色无毒,非常好用的一款番茄定时器批处理工具。

操作:
双击bat文件,手动输入小时,分钟和秒,等待定时完成后会提示一个置顶的小窗口。

支持:
1.设置任意小时、任意分钟、任意秒
2.设置锁屏
3.设置置顶
4.自定义窗口内容
5.闰年&平年
6.全区域日期时间

注意:
文件格式保存为GBK 或 GB2312



@echo off 
setlocal enabledelayedexpansion
set /p add_h=输入小时:
set /p add_m=输入分钟:
set /p add_s=输入秒针:
set /p input=输入提示:
if "%add_h%" neq "" (
    set input_h=%add_h%
) else (
    set input_h=0
)
if "%add_m%" neq "" (
    set input_m=%add_m%
) else (
    set input_m=0
)
if "%add_s%" neq "" (
    set input_s=%add_s%
) else (
    set input_s=0
)
if "%input%" neq "" (
    set input_=%input%
) else (
    set input_="game is over"
)
rem Get the time from WMI - at least that's a format we can work with
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x
echo.%X%
rem dissect into parts
set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set DATE.HOUR=%X:~8,2%
set DATE.MINUTE=%X:~10,2%
set DATE.SECOND=%X:~12,2%
set DATE.FRACTIONS=%X:~15,6%
set DATE.OFFSET=%X:~21,4%
echo %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%
echo input_h=%input_h%
echo input_m=%input_m%
echo input_s=%input_s%

set init_time=%time: =0%
set init_h=%init_time:~0,2%
set init_m=%init_time:~3,2%
set init_s=%init_time:~6,2%
echo %init_h%:%init_m%:%init_s%

set /a end_h=1%init_h%-100+%input_h%
set /a end_m=1%init_m%-100+%input_m%
set /a end_s=1%init_s%-100+%input_s%
echo %end_h%:%end_m%:%end_s%
set current_year=%DATE.YEAR%
set current_month=%DATE.MONTH:~1,1%
set current_day=%DATE.DAY:~1,1%
echo %current_year%_%current_month%_%current_day%

if %end_s% GEQ 60 (
    set /a next_m=%end_s%/60
    echo a=!next_m!
    set /a end_s=!end_s!%%60
    echo aa=!end_s!
    set /a end_m=%end_m%+!next_m!
    echo aam=!end_m!
    echo ab=%end_h%:!end_m!:!end_s!
    if !end_m! GEQ 60 (
        set /a next_h=!end_m!/60
        set /a end_m=!end_m!%%60
        set /a end_h=%end_h%+!next_h!
        echo abc=!end_h!:!end_m!:!end_s!
    )
) else if %end_m% GEQ 60 (
    set /a next_h=!end_m!/60
    set /a end_m=!end_m!%%60
    set /a end_h=%end_h%+!next_h!
    echo abcd=!end_h!:!end_m!:!end_s!
)

rem 跨天
if %end_h% GEQ 24 (
    rem 计算跨过多少天
    set /a need_day=%end_h%/24
    echo need_day=!need_day!
    rem 计算当月取余天数
    set /a end_h=%end_h%%%24
    echo end_datetime=!end_h!:!end_m!:!end_s!
    set current_month=%current_month%
    echo current_month_____=!current_month!
    call:monthcall
    echo !current_month! month has !current_month_day!
    set /a current_month_remain_day=!current_month_day!-%current_day%
    echo current_month_remain_day=!current_month_remain_day!
    goto listloop
) else (
    rem 没有跨天    
    set calc_date_time_no_day=%current_year%-%current_month%-%current_day% %end_h%:%end_m%:%end_s%
    echo calc_date_time_no_day=!calc_date_time_no_day!
    goto start
)

EXIT /B %ERRORLEVEL% 
:listloop
rem 没有跨月    
if !current_month_remain_day! GEQ !need_day! (
    goto endcall
) else (
    rem 有跨月 
    set /a current_month=%current_month%+1
    call:monthcall
    echo %current_month% month has_ !current_month_day!
    set /a current_month_remain_day=!current_month_remain_day!+!current_month_day!
    echo current_month_remain_day=!current_month_remain_day!
    if !current_month_remain_day! GEQ !need_day! (
        goto endcall
    ) else (
        if !current_month! equ 12 (
            set current_month=0
            set /a current_year=%current_year%+1
            echo current_month=!current_month!

        )
        call:listloop
    )
)

goto:eof

:endcall
set /a remain_day=!current_month_remain_day!-!need_day!
set /a current_day=!current_month_day!-!remain_day!
echo Over_Datetime=%current_year%_%current_month%_!current_day!
goto start
goto:eof

:start
choice /t 1 /d y /n >nul
set current_time=%time: =0%
set /a current_t_h=1%current_time:~0,2%-100
set /a current_t_m=1%current_time:~3,2%-100
set /a current_t_s=1%current_time:~6,2%-100
set current_d_year=%DATE.YEAR%
set /a current_d_month=1%DATE.MONTH%-100
set /a current_d_day=1%DATE.DAY%-100

echo Current_Datatime:%current_d_year%_%current_d_month%_%current_d_day% %current_t_h%:%current_t_m%:%current_t_s%
echo Expiry_Datetime:%current_year%_%current_month%_!current_day! %end_h%:%end_m%:%end_s%
echo.
if %current_d_year% GEQ !current_year! (
    if %current_d_month% GEQ !current_month! (
        if %current_d_day% GEQ !current_day! (
            if %current_t_h% GEQ %end_h% (
                if %current_t_m% GEQ %end_m% (
                    if %current_t_s% GEQ %end_s% (
                        goto over
                    )
                )
            )
        )
    )
)
goto start
goto:eof

:monthcall
if %current_month% equ 1 ( set current_month_day=31 )^
else if %current_month% equ 2 (
    @REM yp的值为1时即表示year为闰年,当yp的值为0是即表示year为平年
    set /a isleapyear="^!(current_year %% 4) & ^!(^!(current_year %% 100)) | ^!(current_year %% 400)"
    if !isleapyear! equ 1 (
        set current_month_day=29 
    ) else (
        set current_month_day=28
    )
    echo current_month_day=%current_month_day%  
)^
else if %current_month% equ 3 ( set current_month_day=31 )^
else if %current_month% equ 4 ( set current_month_day=30 )^
else if %current_month% equ 5 ( set current_month_day=31 )^
else if %current_month% equ 6 ( set current_month_day=30 )^
else if %current_month% equ 7 ( set current_month_day=31 )^
else if %current_month% equ 8 ( set current_month_day=31 )^
else if %current_month% equ 9 ( set current_month_day=30 )^
else if %current_month% equ 10 ( set current_month_day=31 )^
else if %current_month% equ 11 ( set current_month_day=30 )^
else if %current_month% equ 12 ( set current_month_day=31 )
echo %current_year%-%current_month%-%current_day%-%current_month_day%
goto:eof

:over
msg * /time 3600 "%input_%"
goto:eof

exit```

多多支持~

免费评分

参与人数 1吾爱币 +5 热心值 +1 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

一条小渣团OvO 发表于 2023-7-5 19:30
请问?
 楼主| androllen 发表于 2023-7-7 00:09
本帖最后由 androllen 于 2023-8-6 00:00 编辑
一条小渣团OvO 发表于 2023-7-5 19:30
请问?

我使用的是中国区域,你用的哪个?根据区域和格式修改下
20230707001357.png

可以用下面的代码跑下 看打印出来是什么

@echo off
rem Get the time from WMI - at least that's a format we can work with
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x
echo.%X%

rem dissect into parts
set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set DATE.HOUR=%X:~8,2%
set DATE.MINUTE=%X:~10,2%
set DATE.SECOND=%X:~12,2%
set DATE.FRACTIONS=%X:~15,6%
set DATE.OFFSET=%X:~21,4%

echo %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%.%DATE.FRACTIONS%


这是我自己修改区域后跑的任务结果

20230805182223.731000+480  
2023-08-05 18:22:23
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表