中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 12:08
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]用VBS获取系统当前时间添加at任务 查看 2,869 回复 27
16 发表于 2008-01-26 21:41 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
18年会员
UID 109557
性别 男
状态 离线
已经考虑到了。
所以。


a=Wsh.Run("at "&hour(now)&":"&((minute(now)+5) mod 60)&" 1.vbs",0,False)

问题解决
17 发表于 2008-01-26 21:44 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
算了吧直接给你代码算了,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
第一高手 第二高手

18 发表于 2008-01-26 21:54 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
hour(now)&":"&((minute(now)+5) mod 60
哦之前,知道有这样计算方法,就是不知道参数怎么写
第一高手 第二高手

19 发表于 2008-01-26 22:35 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
f
Newnn=Split(NewTime(0), " " ,-1)
这句你那里是通的麽?

h?
你那叫考虑了?你那样要等1天才运行吧?

12:56+5=13:01

你那样到12:01去执行……也叫考虑了。。。
20 发表于 2008-01-26 22:59 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
Newnn=Split(NewTime(0), " " ,-1)
if Newnn(1)+1 = 13 Then
nn="01"
else
nn=Newnn(1)+1
end if
已经转换了
第一高手 第二高手

21 发表于 2008-01-26 23:02 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
NewTime(0)里面不包含空格……你这个是什么意思啊?
按空格分割后,newnn(1)是不存在的……你那样就下标越界了……

第一次将time分割后,0 1 2分别是h,m,s
22 发表于 2008-01-26 23:14 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
Wscript.echo Time
下午空格HH:MM:SS

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)
第一高手 第二高手

23 发表于 2008-01-26 23:19 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
2种代码能达到楼主的目的讨论没有意义了
第一高手 第二高手

24 发表于 2008-01-26 23:22 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
Originally posted by fastslz at 2008-1-26 23:19:
2种代码能达到楼主的目的讨论没有意义了



。。。。是说当系统选用24制的时候是不会出现“下午 ”字样的……
这个代码的移植性……

他的代码没有做进位虽然是1句话……

我是说这个问题。。。与方法无关。
25 发表于 2008-01-26 23:27 ·  中国 湖南 常德 汉寿县 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
18年会员
UID 109557
性别 男
状态 离线
哦也。讨论得还真激烈。当然我一句话只是达到我的目的,因为我不需要上午下午的判断 只要系统当时间+5就行了。

大家讨论的也对。是另一种思路

不管什么方法。我只希望代码能尽量的精简

[ Last edited by hackhd on 2008-1-26 at 11:29 PM ]
26 发表于 2008-01-27 01:14 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
就一个DateAdd
Wscript.echo FormatDateTime(DateAdd("n",5,now),vbShortTime)
27 发表于 2008-01-27 14:35 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
晕DateAdd函数原来这么简单,之前我把它复杂化了
Vbs时间换算太灵活了
vbs脚本如果英语基础好的话,写脚本如同写短句,之所以中国软件业不如后来居上印度也是因为本地化语言障碍。
第一高手 第二高手

28 发表于 2008-01-27 19:07 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
18年会员
UID 109557
性别 男
状态 离线
Wsh.Run "at "&hour(now)&":"&((minute(now)+5) mod 60)&" 1.vbs",0,False
FormatDateTime(DateAdd("n",5,now),vbShortTime)
也不错啊。。
论坛跳转: