标题: 请高手们帮忙修改一下这个关于时间的批处理
[打印本页]
作者: tianzizhi
时间: 2006-10-22 22:21
标题: 请高手们帮忙修改一下这个关于时间的批处理
我现在需要一个批处理,以现在的时间为起点,过指定的时间后运行一个命令.
我在网上找到下面的批处理程序,但它有一个问题,就是当时间为0*:**时就不能正确运行了,因为0*+1加不起来呀,例如:当早上08:30时就不能正确运行了,但到了10点以后就行了,因为这时再加1能加起来了,就是小时位上第一个数为0的问题,如何解决这个问题呀.
请高手们帮忙修改一下下面的批处理,使它在一天24小时内都能用,或提供一下能满足我要求的其它批处理程序,谢谢.
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a next_hour=0
set /a next_minute=0
for /F "tokens=1,2 delims=:" %%i in ('TIME /t') do (
rem 这里1是间隔时间,可以根据需要自己调节
set /a next_minute=%%j+1
set /a next_hour=%%i+1
if !next_minute! GEQ 60 (
set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
)
at !next_hour!:!next_minute! d:\常用\d.vbs
schtasks /delete /tn "zhang" /f
endlocal
作者: namejm
时间: 2006-10-23 00:48
如果小时数和分钟的首位上出现0,可以把如下代码
set /a next_minute=%%j+1
set /a next_hour=%%i+1
修改为
set /a next_minute=1%%j-100+1
set /a next_hour=1%%i-100+1
奇怪的是,在我的机子上并没有出现小时数首位为0的情况。
[
Last edited by namejm on 2006-10-23 at 00:52 ]
作者: 不得不爱
时间: 2006-10-23 00:55
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set a=%time:~0,2%
if %a:~0,1%==0 (set/a next_hour=%a:~1%+1) else set/a next_hour=a+1
set a=%time:~3,2%
if %a:~0,1%==0 (set/a next_minute=%a:~1%+1) else set/a next_minute=a+1
if %next_minute% GEQ 60 (set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
at !next_hour!:!next_minute! d:\常用\d.vbs
schtasks /delete /tn "zhang" /f
endlocal
作者: tianzizhi
时间: 2006-10-23 01:23
版主真聪明,现在可用了,谢谢,(用time 时小时首位不会出现0的,但用time /t 时就会出现了,版主试试).
作者: tianzizhi
时间: 2006-10-23 01:38
版主麻烦你再改一下,把时间设成10点以后还行的,但设成10点以前还是不行的,显示:此时不应有<set/a.
[
Last edited by tianzizhi on 2006-10-23 at 01:43 ]
作者: 不得不爱
时间: 2006-10-23 02:43
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set/a next_hour=%time:~0,2%+1
set a=%time:~3,2%
if %a:~0,1%==0 (set/a next_minute=%a:~1%+1) else set/a next_minute=a+1
if %next_minute% GEQ 60 (set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
at !next_hour!:!next_minute! d:\常用\d.vbs
schtasks /delete /tn "zhang" /f
endlocal
[
Last edited by qwe1234567 on 2006-10-23 at 04:22 ]
作者: 不得不爱
时间: 2006-10-23 02:56
——————————————————版务纪录——————————————————
执行:qwe1234567
说明:重复发表主题 {请高手们帮忙修改一下这个关于时间的批处理} 在{DOS疑难解答 & 问题讨论 (解答室)} 请不要发表重复主题
操作:合并主题,并且删除楼主的重复主题帖子
————————————————————————————————————————
作者: tianzizhi
时间: 2006-10-23 03:59
版主少了一句呀,set a=%time:~0,2%
非常感谢你让我学到很多知识.
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set a=%time:~0,2%
set/a next_hour=a+1
set a=%time:~3,2%
if %a:~0,1%==0 (set/a next_minute=%a:~1%+1) else set/a next_minute=a+50
if %next_minute% GEQ 60 (set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
at !next_hour!:!next_minute! d:\常用\d.vbs
schtasks /delete /tn "zhang" /f
endlocal
这下可会了,折腾了半天了,让我学会了两种不同的方法呀,一个是脑筋急转变,一个是严谨的dos学习过程,很不错,也让我学会了set的偏移量和长度的使用,
还是在应用中学东西快呀,呵呵,建议学dos的朋友要在实践中学呀,多给自己提问.
作者: 不得不爱
时间: 2006-10-23 04:26
在给你优化下
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set/a next_hour=%time:~0,2%+1
set/a next_minute=1%time:~3,2%-100+1
if %next_minute% GEQ 60 (set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
at !next_hour!:!next_minute! d:\常用\d.vbs
schtasks /delete /tn "zhang" /f
endlocal
作者: tianzizhi
时间: 2006-10-23 04:43
集两者与一,好!都要了.
作者: tianzizhi
时间: 2006-10-23 04:52
再问一下版主,那个GEQ是大于的意思吧,那小于是哪个呀,怎么以前没有见过它们呀,在批处理里经常比较大小的> <不能用是吗,类似的这些符号在哪里可以找到呢??
作者: lxmxn
时间: 2006-10-23 05:50
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
之所以不能用< >之类的符号判断大小,是因为在批处理中,<、>、>>都是重定向符号,有特殊的用处。
作者: tao0610
时间: 2006-10-24 05:25
at !next_hour!:!next_minute! d:\常用\d.vbs
中的!next_hour!和!next_minute!也是变量吗?
两边加的叹号和%相似吗?
作者: 78586862
时间: 2006-10-28 08:02
Quote: |
Originally posted by qwe1234567 at 2006-10-23 04:26 AM:
在给你优化下
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set/a next_hour=%time:~0,2%+1
set/a next_minute=1%time:~3,2%-100+1
if ... |
|
请问版主 这个间隔是 1 这个1代表的时间是多久 是1分还是1小时
如果我要20分以后运行指定文件 那应该怎么修改 如果是4小时又应该怎么修改呢
还有 这个批处理 是不是运行一次以后 就不需要在运行了 到了指定时间就会自己运行指定的 文件呢 它是不是24小时都在进程里的
at !next_hour!:!next_minute! d:\常用\d.vbs
这个是指运行的指定文件
那这个 schtasks /delete /tn "zhang" /f
是指定要删除 F盘下的 zhang名字的文件吗
麻烦告诉我这个菜鸟 我也正在学习 如果这个批处理真的那么神奇的话 就对我很重要 谢谢了
作者: 不得不爱
时间: 2006-10-28 09:04
要20分以后运行指定文件 那就改1为20就是了
作者: lxmxn
时间: 2006-10-28 09:05
- 从代码上所写的内容来看,第一个1是表示小时,第二个1表示的是分钟。
- 要再指定的时间运行文件,可以考虑at命令和schtasks命令。还可以利用这个批处理,只要把代码修改一下就可以了。
- 至于这个"schtasks /delete /tn "zhang" /f",是指删除任务名为"zhang"的计划任务。
作者: 78586862
时间: 2006-10-28 23:25
我按照上面的试了一下
已经可以创建任务了 但是运行不得 然后我自己创建个任务
就提示
已创建新任务,但可能不能运行,因为无法设置帐户信息。
指定错误是:
0x80070005:拒绝访问
请试着使用“任务”的浏览按钮来定位应用程序
我当前用的 用户是 Administrator 是超级用户啊 怎么会不给创建任务呢
作者: 不得不爱
时间: 2006-10-28 23:27
可能是什么服务被禁止了吧
作者: 78586862
时间: 2006-10-28 23:38
标题: 恩 已经解决
输入gpedit.msc
出来组策略,依次点击“计算机配置”-“windows设置”-“安全设置”-“本地策略”-“安全选项”,
看右边框内:“帐户:使用空白密码的本地帐户只允许进行控制台登录”改为“停用”,应该就可以了。
作者: zerocq
时间: 2006-10-28 23:44
MS用vbs的dateadd()更简单.......
作者: luobotou
时间: 2007-1-4 03:53
没有回复 13 楼?
%next_hour% 和 !next_hour! 一样吗?
作者: rochan
时间: 2007-1-4 04:49
不得不爱 的头像 真难看.....
恕我直言!
作者: qq82015930
时间: 2007-12-9 12:37
看了总要留句话在走
作者: huahua0919
时间: 2007-12-9 13:22
Quote: |
Originally posted by luobotou at 2007-1-4 03:53 AM:
没有回复 13 楼?
%next_hour% 和 !next_hour! 一样吗? |
|
变量延迟
效果不一样!
作者: nanhui112
时间: 2007-12-12 22:18
呵呵 过去我对时间这方面遇到和这一样的问题 我也留句话 顶~~~
作者: ooaf
时间: 2007-12-26 18:32
=
要达到以秒 为间隔时间,运行d.bat, 下面是否正确,
秒的计算?
每隔10s 运行d.bat,并重新添加任务,循环
setlocal ENABLEDELAYEDEXPANSION
at /delete /yes
rem 这里10是间隔时间(s),可以根据需要自己调节
set/a next_hour=%time:~0,2%
set/a next_minute=1%time:~3,2%-100
set/a next_second=
1%time:~6,2%-100+10
if %next_second% GEQ 60 (set /a next_second=!next_second!-60
set /a next_minute=!next_minute!+1
if %next_minute% GEQ 60 (set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24)
)
at !next_hour!:!next_minute
!:!next_second! d:\d.bat
endlocal
保存为 d.bat
=
[
Last edited by ooaf on 2007-12-26 at 06:36 PM ]
作者: yushe
时间: 2007-12-31 14:50
学习