标题: [已解决]用VBS获取系统当前时间添加at任务
[打印本页]
作者: hackhd
时间: 2008-1-26 06:04
标题: [已解决]用VBS获取系统当前时间添加at任务
比如说现在一个VBS脚本运行起来在退出这个脚本前(因为前面有do loop语句所以运行后不会自动退出)
获取当前系统时间。只要分钟就好了 ,然后在获得的当前时间上+个5分钟,再运行这个VBS脚本
简单点说就像
at 系统当前时间(分钟)+5(分钟) xx.vbs
wscript.quit
[
Last edited by hackhd on 2008-1-27 at 07:24 PM ]
作者: slore
时间: 2008-1-26 12:28
msgbox time自己mid吧
作者: hackhd
时间: 2008-1-26 18:37
这样不行哦。
作者: fastslz
时间: 2008-1-26 19:07
Times = Time
NewTime = Split(times, ":" ,-1)
Wscript.echo NewTime(1)+5
'完整写法
Wscript.echo Time & "====加5分钟是====" & NewTime(0) & chr(58) & NewTime(1)+5 & chr(58) & NewTime(2)
作者: slore
时间: 2008-1-26 19:30
上面最后一句是Time
s
作者: slore
时间: 2008-1-26 19:31
貌似没有做55处理……
作者: fastslz
时间: 2008-1-26 19:57
是的其实首句是多余的,没做55+处理,我怕数字计算
NewTime = Split(time, ":" ,-1)
Wscript.echo NewTime(1)+5
Wscript.echo Time & "====加5分钟是====" & NewTime(0) & chr(58) & NewTime(1)+5 & chr(58) & NewTime(2)
作者: hackhd
时间: 2008-1-26 19:58
获取时间方法4楼说得很清楚了。谢谢啊。我把它整合起来添加一个DOS任务怎么就出错呢。
dim wsh
set wsh=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
Times = Time
NewTime = Split(times, ":" ,-1)
command="at "&NewTime&"(1)+5 "&"1.vbs"
retodate=wsh.Run(command,0,true)
作者: slore
时间: 2008-1-26 20:03
你msgbox下你的command就知道你自己错哪里了
作者: hackhd
时间: 2008-1-26 20:12
现在这样子已经以提示了command这行类型不匹配了
后面加msgbox没用。我是个菜菜还烦大哥再指点指点
作者: slore
时间: 2008-1-26 20:22
command
= "
at "
& NewTime
& "
(1)+5 "
& "
1.vbs"
你照4楼的修改……
NewTime是个数组……
不能单独,你的括号引用错误了。。。
作者: fastslz
时间: 2008-1-26 21:04
整点55分钟+5 及12点+1=01完整代码
NewTime = Split(Time, ":" ,-1)
if NewTime(1)+5 > 59 Then
mm=NewTime(1)+5-60
Newnn=Split(NewTime(0), " " ,-1)
if Newnn(1)+1 = 13 Then
nn="01"
else
nn=Newnn(1)+1
end if
Times = Newnn(0) & " " & nn & chr(58) & mm & chr(58) & NewTime(2)
else
Times = NewTime(0) & chr(58) & NewTime(1)+5 & chr(58) & NewTime(2)
end if
Wscript.echo Time & "====加5分钟是====" & Times
作者: hackhd
时间: 2008-1-26 21:23
哇。这么多代码。要是写个病毒怎么办。一个功能就占了这么多了。
a=Wsh.Run("at "&hour(now)&":"&((minute(now)+5) mod 60)&" 1.vbs",0,False)
[
Last edited by hackhd on 2008-1-26 at 09:41 PM ]
作者: slore
时间: 2008-1-26 21:32
Newnn
= Split(NewTime
(0
), " " ,
- 1
) '不清楚用意
'将time Split就得到时分秒了啊……
你那样貌似下标会越界……
作者: slore
时间: 2008-1-26 21:34
Quote: |
Originally posted by hackhd at 2008-1-26 21:23:
哇。这么多代码。要是写个病毒怎么办。一个功能就占了这么多了。
a=Wsh.Run("at "&hour(now)&":"&(minute(now)+5)&" 1.vbs",0,False) |
|
不是由长短绝对代码的好坏的……
你的这个觉得好麽?
12:56:36你的结果如何呢?而且at这样用是没有效果的吧
作者: hackhd
时间: 2008-1-26 21:41
已经考虑到了。
所以。
a=Wsh.Run("at "&hour(now)&":"&((minute(now)+5) mod 60)&" 1.vbs",0,False)
问题解决
作者: fastslz
时间: 2008-1-26 21:44
算了吧直接给你代码算了,at不支持上午下午的,还要格式化24小时制的
NewTime = Split(Time, ":" ,-1)
if NewTime(1)+5 > 59 Then
mm=NewTime(1)+5-60
Newnn=Split(NewTime(0), " " ,-1)
if Newnn(1)+1 = 13 Then
nn="01"
else
nn=Newnn(1)+1
end if
Times = Newnn(0) & " " & nn & chr(58) & mm & chr(58) & NewTime(2)
else
Times = NewTime(0) & chr(58) & NewTime(1)+5 & chr(58) & NewTime(2)
end if
dim wsh
set wsh=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
command = "at " &Chr(34) & FormatDateTime (Times ,vbShortTime) &Chr(34) &" 1.vbs"
retodate=wsh.Run(command),vbHide
作者: fastslz
时间: 2008-1-26 21:54
hour(now)&":"&((minute(now)+5) mod 60
哦之前,知道有这样计算方法,就是不知道参数怎么写
作者: slore
时间: 2008-1-26 22:35
f
Newnn=Split(NewTime(0), " " ,-1)
这句你那里是通的麽?
h?
你那叫考虑了?你那样要等1天才运行吧?
12:56+5=13:01
你那样到12:01去执行……也叫考虑了。。。
作者: fastslz
时间: 2008-1-26 22:59
Newnn=Split(NewTime(0), " " ,-1)
if Newnn(1)+1 = 13 Then
nn="01"
else
nn=Newnn(1)+1
end if
已经转换了
作者: slore
时间: 2008-1-26 23:02
NewTime(0)里面不包含空格……你这个是什么意思啊?
按空格分割后,newnn(1)是不存在的……你那样就下标越界了……
第一次将time分割后,0 1 2分别是h,m,s
作者: fastslz
时间: 2008-1-26 23:14
Wscript.echo Time
下午空格HH:MM:SS
Quote: |
TimeTmp="下午 12:56:00"
NewTime = Split(TimeTmp, ":" ,-1)
if NewTime(1)+5 > 59 Then
mm=NewTime(1)+5-60
Newnn=Split(NewTime(0), " " ,-1)
if Newnn(1)+1 = 13 Then
nn="01"
else
nn=Newnn(1)+1
end if
Times = Newnn(0) & " " & nn & chr(58) & mm & chr(58) & NewTime(2)
else
Times = NewTime(0) & chr(58) & NewTime(1)+5 & chr(58) & NewTime(2)
end if
Wscript.echo Times
Wscript.echo FormatDateTime (Times ,vbShortTime) |
|
作者: fastslz
时间: 2008-1-26 23:19
2种代码能达到楼主的目的讨论没有意义了
作者: slore
时间: 2008-1-26 23:22
Quote: |
Originally posted by fastslz at 2008-1-26 23:19:
2种代码能达到楼主的目的讨论没有意义了 |
|
。。。。是说当系统选用24制的时候是不会出现“下午 ”字样的……
这个代码的移植性……
他的代码没有做进位虽然是1句话……
我是说这个问题。。。与方法无关。
作者: hackhd
时间: 2008-1-26 23:27
哦也。讨论得还真激烈。当然我一句话只是达到我的目的,因为我不需要上午下午的判断 只要系统当时间+5就行了。
大家讨论的也对。是另一种思路
不管什么方法。我只希望代码能尽量的精简
[
Last edited by hackhd on 2008-1-26 at 11:29 PM ]
作者: zh159
时间: 2008-1-27 01:14
就一个
DateAddWscript.echo FormatDateTime(DateAdd("n",5,now),vbShortTime)
作者: fastslz
时间: 2008-1-27 14:35
晕DateAdd函数原来这么简单,之前我把它复杂化了
Vbs时间换算太灵活了
vbs脚本如果英语基础好的话,写脚本如同写短句,之所以中国软件业不如后来居上印度也是因为本地化语言障碍。
作者: hackhd
时间: 2008-1-27 19:07
Wsh.Run "at "&hour(now)&":"&((minute(now)+5) mod 60)&" 1.vbs",0,False
FormatDateTime(DateAdd("n",5,now),vbShortTime)
也不错啊。。