中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-18 21:30
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]发一个自动计时的bat 查看 4,204 回复 12
楼 主 [原创]发一个自动计时的bat 发表于 2007-01-13 23:21 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
UID 74129
性别 男
状态 离线
上次来的时候,有人问怎么让一个程序,在设定的时间后运行,今天我写了一个,发上来,大家一起改进。




@echo off
:lp
cls
echo.
setlocal enabledelayedexpansion
echo The time now is: %time%
echo.
set si=%time%
echo Press any key to see the result.....
pause >nul

::Select var
set th=!si:~0,2!
rem select hour
set tm=!si:~3,2!
rem select minute
set ts=!si:~6,2!
rem select second
set tms=!si:~9,2!
rem select milisecond

:: add one minute to origin.
::这里,你可以自己设定隔多久运行某个程序
set /a tm%+=1

::Check output
if "%tm%" equ "60" (set /a th%+=1)
::如果大于60分钟,就将小时数加一

echo.
echo The latest time is: %th%:%tm%:%ts%
echo Attention,the xxx program will run at this time!
pause>nul
goto :lp



[ Last edited by scriptor on 2007-9-14 at 04:07 PM ]
2 发表于 2007-01-14 03:06 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
楼主这样还要看是12小时制或24小时制吧!
3 发表于 2007-01-14 03:14 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
UID 74129
性别 男
状态 离线
哦,对了
我忘记了

因为我的就是24机制的

那么我想一下,看要不要改一下
4 发表于 2007-01-14 03:18 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
UID 74129
性别 男
状态 离线
你发一个12进制的时间格式给我
我不知道他的格式

或许就只是多了一个

am 或是 pm吧
5 发表于 2007-01-15 04:16 ·  中国 山东 济南 电信
新手上路
积分 18
发帖 9
注册 2007-01-04 04:36
UID 75394
性别 男
来自 山东
状态 离线
试以下
6 发表于 2007-01-15 04:16 ·  中国 山东 济南 电信
新手上路
积分 18
发帖 9
注册 2007-01-04 04:36
UID 75394
性别 男
来自 山东
状态 离线
嘿嘿,听好的!!!
7 发表于 2007-04-14 09:49 ·  中国 湖北 武汉 电信
初级用户
积分 41
发帖 22
注册 2007-04-12 09:29
UID 84862
性别 男
状态 离线
强人啊
8 发表于 2007-04-14 09:49 ·  中国 湖北 武汉 电信
初级用户
积分 41
发帖 22
注册 2007-04-12 09:29
UID 84862
性别 男
状态 离线
强人啊
9 发表于 2007-12-31 20:20 ·  中国 山东 青岛 联通
初级用户
积分 77
发帖 45
注册 2007-08-03 17:25
UID 94584
性别 男
状态 离线
又不行啊。。。。
因为喜欢,所以无悔!
10 发表于 2007-12-31 21:04 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
使用计划任务(at或者schtasks)无法满足要求吗?
11 发表于 2007-12-31 22:54 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
UID 74552
性别 男
状态 离线
计划任务是个风险程序
12 发表于 2008-04-14 15:12 ·  中国 广东 广州 黄埔区 电信
新手上路
积分 12
发帖 5
注册 2007-02-27 23:36
UID 80339
性别 男
状态 离线
if %time:~0,2% LEQ 5 echo It's time to do something
如果时间在5点之前就启动命令
13 [求助]! 帮我看看这个批处理如何修改!!! 发表于 2008-04-14 19:28 ·  中国 广东 梅州 五华县 电信
初级用户
积分 79
发帖 34
注册 2008-04-02 23:20
UID 114802
性别 男
状态 离线
这是我看了别人的批处理后自己制作的一个定时关机bat.

@mode con cols=90 lines=35&color 1f
@echo off
call :cl
goto input
:1
title 定时关机 ! made by:小野
cls
echo 当前时间:%date% , %time%
echo\&echo 请输入定时关机时间。 (需要24小时制,如17:30 :请使用英文标点)&echo\&echo\
echo 如果要返回菜单功能,按 0 后回车!
echo.
set tim=
set /p tim=请输入关机时间:
if "\%tim%\"=="\0\" call :cl&goto input
at %tim% /interactive shutdown -s -c "要取消关机请在功能菜单中选择取消关机功能!!" >nul
if errorlevel 1 cls&echo * 输入错误,请重新输入! &goto 1
echo.
echo.
echo.
echo.
echo ================设置成功!!!==============================
echo.
echo ======关机前记得保存好文档或其他要保存的东东哦! ^_^=====
ping -n 2 127.1>nul
call :cl
goto input
:2
shutdown -a
cls
echo.
echo.
echo.
title 取消关机成功!! made by:小野
echo.
echo=======================取消关机成功!!!==================
echo.
echo.
echo.
ping -n 2 127.1>nul
goto input
:4
cls
title 功能说明 made by: 小野
echo.
echo.&echo.&echo.&echo.&echo.&echo.
echo ※※※※※※※※※※※※※※※※功能说明:※※※※※※※※※※※※※※※※※※※※※※
echo.
echo.
echo ◇◇◇◇定时关机: 定时关机功能只能在同一天内使用,它可以在同一个时间段内输入多个关机时间,系统会自动按时间顺序启动关机时间(即在第一个关机时间被取消后,在第二个关机时间启动会被自动启动,依次类推!)。设定关机时间后可在功能菜单下面的“你设定的关机时间是:”查看设定的关机时间。
echo.
echo ◇◇◇◇取消关机: 取消关机是在弹出关机倒计时窗口使用才有效!!在没有弹出窗口之前使用虽然会显示取消关机成功,但实际并没有取消定时关机功能,时间一到还会启动定时关机功能!!
echo.
echo ◇◇◇◇退出: 退出程序窗口!!
echo.
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo\&echo.&echo.
pause
goto input

:3
cls&exit
:input
cls
title 功能代码号选择!
cls
call :card
echo\&echo\&echo\
echo 请输入功能代号:
echo.
set sel=
set /p sel=
if "\%sel%\"=="" goto input
call :%sel%
if errorlevel 1 cls&echo\&echo\&echo\&echo\&echo ========= ☆★输入错误命令,想忽悠在下?!★☆======&call :cl&goto input
:cl
for /l %%i in (1,1,40) do (
echo\
for /l %%a in (1,1,250) do ver>nul
)
goto :eof
:card
title 功能菜单! made by: 小野
echo\&echo\&echo.
echo\&echo\&echo 功能菜单:
echo ▲△△△△△△△△△△△△△△△△△△
echo ▲ ▲
echo ▲ 1=定时关机 ▲
echo ▲ ▲
echo ▲ 2=取消关机 ▲
echo ▲ ▲
echo ▲ 3=退出 ▲
echo ▲ ▲
echo ▲ 4=功能说明 ▲
echo ▲ ▲
echo △△△△△△△△△△△△△△△△△△▲
echo.
echo.
echo.
echo (注释:等号左边的为功能代号,请输入左边的的代号!&echo\
echo 取消关机功能只能在弹出关机倒计时窗口时使用有效!!)
echo.
echo.
echo.
echo 你设定的关机时间是: %tim%


我试了一下定时可以,取消关机也可以,但正如我说明所说的,取消关机必须在弹出关机倒计时窗口是才能取消,有没有办法在设定时间后弹出倒计时窗口之前选择取消关机键能够取消定时关机功能。还有如何修改能够让最后一个语句在设定时间后才在功能菜单中显示。
最后,我使用这个 bat 发生过这样的是我在时间设定那里同以时一间段设定了两个关机时间而且这两个时间相隔一分钟,在第一个关机时间的时候刚开关机程序正常运行,但关到一半就发生了黒屏现象,电脑不会卡死,却无法退出黒屏,这是什么原因?
希望各位高手指教一下!!
还有设定关机时间后即使关机后重启,在到了设定时间也会关机。对吗?
论坛跳转: