中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » slore大哥求助!在这个VBS下载模块里添加一个条件“次数
作者:
标题: slore大哥求助!在这个VBS下载模块里添加一个条件“次数 上一主题 | 下一主题
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『楼 主』:  slore大哥求助!在这个VBS下载模块里添加一个条件“次数

slore大哥

如何加这个条件呢。检测下载的程序当天只运行一次

[ Last edited by hackhd on 2008-1-29 at 02:13 AM ]

2008-1-29 00:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

Dim wsh
Set wsh = CreateObject("wscript.shell")
Set fso = CreateObject("scripting.filesystemobject")

ys = readtxt("c:\temp.txt",1)   'ys的值等于TMEP。TXT文件的第一行
www = readtxt("c:\temp.txt",2)   'WWW的值等于temp.txt文件的第二行
'C:\TEMP.TXT文件的内容是
'"c:\not.exe"
'"http://uo.0736cd.net/notepad.exe"

hd www,ys

Function hd(www,ys)
   
Set Post = CreateObject("microsoft.XMLHTTP")
   
Post.Open "GET",www,0
    Post.Send()                              '保存为VBS,执行到这里就提示无效的语法。怎么处理。
   
Set aGet = CreateObject("ADODB.Stream")
   
aGet.Mode = 3
    aGet.Type = 1
    aGet.Open()
   
aGet.Write(Post.responseBody)
   
aGet.SaveToFile ys,2
    wscript.sleep 10000
    wsh.Run ys '延迟过后执行下载文件
End Function


Function
readtxt(wr,line)
   
If line < 0 Then wr = wscript.scriptfullname
    If fso.fileexists(wr) Then
        If
fso.getfile(wr).size = 0 Then
            
readtxt = 0
        Else
            Set
readfile = fso.OpenTextFile(wr,1)
            
Set chickline = fso.OpenTextFile(wr,1)
            
chickline.ReadAll
            
txtline = chickline.line
            chickline.Close
            If
line > 0  And line <= txtline Then
               
i = 0
                Do While i < line
                    i = i + 1
                    If Not readfile.atendofstream Then
                        
strline = readfile.ReadLine
                    Else
                        
strline = 0
                    End If
                Loop
               
readtxt = strline
            ElseIf line <= 0 Then
               
readtxt = readfile.ReadAll
            Else
               
readtxt = 0
            End If
            
readfile.Close
        End If
    Else
        
readtxt = 0
    End If
End Function




代码没错。。。。错在…………

c:\temp.txt的内容应该为:
c:\not.exe
http://uo.0736cd.net/notepad.exe

2008-1-29 01:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 3 楼』:  

啊哦。。slore大哥一来就找到问题了。。。我的救星

2008-1-29 01:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 4 楼』:  

在前面声明一下
exe=fso.getspecialfolder(2)&"\"  

'C:\TEMP.TXT文件的内容是
'第一行改为exe&"1.exe" 让它保存到临时文件夹去
Function hd(www,ys)
    Set Post = CreateObject("microsoft.XMLHTTP")
    Post.Open "GET",www,0
    Post.Send()                             法。怎么处理。
    Set aGet = CreateObject("ADODB.Stream")
    aGet.Mode = 3
    aGet.Type = 1
    aGet.Open()
    aGet.Write(Post.responseBody)
    aGet.SaveToFile ys,2   '这里提示无法写入 YS只能用绝对路径?
    wscript.sleep 10000
    wsh.Run ys '延迟过后执行下载文件
End Function

加个msgbox ys
发现这个值为exe&"1.exe"   那么这里就是直接把直放进去了
aGet.SaveToFile exe&"1.exe" ,2   咦,直接放进去也可以执行啊。为什么不可以呢。这里看到的这个exe&"1.exe"是我手动转换了一次。再放去脚本,脚本再转换一次。一共转了二次,所以正确。而直接放YS的话。脚本只转了一次。所以错误。怎么解决呢?

aGet.SaveToFile  exe&ys,2  这样就行了。

[ Last edited by hackhd on 2008-1-29 at 02:06 AM ]

2008-1-29 01:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 5 楼』:  

文本里的exe是字符串

你脚本里的exe是变量。。。。

你在txt里写1.exe

在你的脚本里在调用hd的时候让ys=exe & ys

msgbox exe
msgbox "exe"
这个是区别。。。

2008-1-29 14:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 6 楼』:  

次数?你这个脚本就执行一次。。。。。

你可以检测temp下存在那个文件不。。。存在退出。

越来越像种马了?

2008-1-29 14:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 7 楼』:  

文件可以检测啊。
脚本只执行一次是因为还没有循环加上

以检测文件存在就退出的办法不可行。文件里要是有多个要下载的任务怎么办。

我现在想的是在TEMP。TXT文件下载过的做个标记 或者在下载模块里,设一个条件来记录次数。

[ Last edited by hackhd on 2008-1-29 at 05:32 PM ]

2008-1-29 17:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by hackhd at 2008-1-29 17:17:
文件可以检测啊。
脚本只执行一次是因为还没有循环加上

以检测文件存在就退出的办法不可行。文件里要是有多个要下载的任务怎么办。

我现在 ...

那就由你自己定了……

只执行一次干么要循环……汗~

2008-1-29 17:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 9 楼』:  

这个又错哪里了。

dim wsh
set wsh=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
if fso.fileexists("c:\temp.txt") then
set openfile=fso.opentextfile("c:\temp.txt", 1)  
one=openfile.readline
openfile.close
if one="1" then
msgbox one
end if
end if

TEMP内容就一个数字  1

MSGBOX就是弹不出来。如果把上面的IF ONE=“1” THEN删掉,msgbox才能弹出来

奇了怪了。好像又可以了

[ Last edited by hackhd on 2008-1-29 at 06:01 PM ]

2008-1-29 17:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 10 楼』:  

那就是你的one不是1啊
你msgbox """" & one & """"
检测下

2008-1-29 18:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackhd
中级用户





积分 231
发帖 102
注册 2008-1-25
状态 离线
『第 11 楼』:  

上下QQ吧。有段代码我想发给你看。

2008-1-29 22:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: