使用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”您在哪一行得到错误?请后退一步,描述您试图解决的实际问题,而不是您认为的解决方案。通过下载一个空文件,您试图完成什么?是否要检查该特定文件是否存在?还有什么吗?是的,是打字错误,我没有复制粘贴,因为这段代码在另一个网络中)所以我的问题是,我需要下载所有文件,包括空文件,但这段代码对空文件不起作用。