Baixar o arquivo do vbscript?

5

Eu preciso de um script que possa ser executado em janelas recém-instaladas xp + e baixe arquivos especificados da internet, como link É uma maneira fácil de fazer isso sem precisar criar solicitações HTTP / FTP ou usar programas de terceiros como o wget? Eu posso sugerir que WScript.CreateObject ("internetexplorer.application") fará a mágica, mas a documentação é extremamente grande e o Google é silencioso, como sempre:).

    
por grigoryvp 22.06.2009 / 14:47

4 respostas

13

Apenas encontrei este um colado abaixo. Você pode executá-lo com o cscript e programá-lo.

   'Set your settings
strFileURL = "http://www.domain.com/file.zip" strHDLocation = "D:\file.zip" ' Fetch the file Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.send() If objXMLHTTP.Status = 200 Then Set objADOStream = CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type = 1 'adTypeBinary objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0 'Set the stream position to the start Set objFSO = Createobject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation Set objFSO = Nothing objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing End if Set objXMLHTTP = Nothing
    
por 22.06.2009 / 15:17
2

O VBScript é irritante e não cooperativo quando se trata de fazer coisas assim. Esse tipo de coisa sempre requer servidores COM que não são formalmente parte do mecanismo de script.

A sugestão de Maxwell de usar o MSXML2.XMLHTTP parece ser uma maneira legal disso. Devo admitir que não havia encontrado esse truque antes. Existem também vários servidores COM comerciais que farão downoads de arquivos.

Esse tipo de problema é uma das razões pelas quais estou olhando para mudar grande parte do meu VBScript para o Powershell. Como o Powershell pode usar objetos .NET fáceis de usar, é muito mais fácil fazer isso.

JR

    
por 22.06.2009 / 15:27
1

O método usando

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

é mais elegante, infelizmente não é muito portável já que a versão do objeto muda muito ao longo das versões e atualizações do Windows.

Usando

WScript.CreateObject("internetexplorer.application")

é provavelmente melhor, mas menos elegante.

    
por 13.09.2012 / 16:36
1

MSXML2.XMLHTTP é construído em torno do antigo WinInet. Há uma interface mais nova chamada Msxml2.ServerXMLHTTP, que é mais confiável. Ele é construído em uma nova pilha do MS WinHTTP. Eu sugiro chamar WinHTTP diretamente.

Basta usar CreateObject ("WinHttp.WinHttpRequest.5.1") em vez de criar um objeto MSXML2.XMLHTTP. O resto do código permanece o mesmo.

    
por 19.03.2013 / 06:38

Tags