使用VBScript下载空文件
当我试图用此脚本下载一个空文件时,出现以下错误: 参数类型错误、超出可接受范围或相互冲突。我怎样才能修好它 这是我的剧本使用VBScript下载空文件,vbscript,adodb,winhttprequest,Vbscript,Adodb,Winhttprequest,当我试图用此脚本下载一个空文件时,出现以下错误: 参数类型错误、超出可接受范围或相互冲突。我怎样才能修好它 这是我的剧本 Set objHTTP = CreateObject("WinHTTP.WinHttpRequest.5.1") objHTTP.Open "GET", "http://localhost/file.txt", False objHTTP.Send Dim objStream Set objStream = CreateObject(
Set objHTTP = CreateObject("WinHTTP.WinHttpRequest.5.1")
objHTTP.Open "GET", "http://localhost/file.txt", False
objHTTP.Send
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 1
.Open
.Write objHTTP.ResponseBody
.SaveToFile "C:\file.txt"
.Close
End With
Set objStream = Nothing
只有空文件才有这个问题。对于空文件,.ResponseBody是子类型empty的变体。这样的怪兽是写不出来的。由于无法在VBScript中创建空字节(),因此必须跳过空文件的.Write。代码:
Const adSaveCreateNotExist = 1 ' Default. Creates a new file if the file does not already exist
Const adSaveCreateOverWrite = 2 ' Overwrites the file with the data from the currently open Stream
' object, if the file already exists
Set objHTTP = CreateObject("WinHTTP.WinHttpRequest.5.1")
objHTTP.Open "GET", "http://gent/empty.html", False
objHttp.Send
WScript.Echo objHttp.Status, objHttp.StatusText
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 1
.Open
WScript.Echo TypeName(objHTTP.ResponseBody)
If Not IsEmpty(objHTTP.ResponseBody) Then .Write objHTTP.ResponseBody
.SaveToFile "file.txt", adSaveCreateOverWrite
.Close
End With
Set objStream = Nothing
输出:
cscript 24512602.vbs
200 OK
Empty
...
dir
...
01.07.2014 16:54 771 24512602.vbs
01.07.2014 16:54 0 file.txt
“obj.HHTTP.Open”应该是“objHTTP.Open”您在哪一行得到错误?请后退一步,描述您试图解决的实际问题,而不是您认为的解决方案。通过下载一个空文件,您试图完成什么?是否要检查该特定文件是否存在?还有什么吗?是的,是打字错误,我没有复制粘贴,因为这段代码在另一个网络中)所以我的问题是,我需要下载所有文件,包括空文件,但这段代码对空文件不起作用。