none
Script para realizar download sozinho em um diretorio x RRS feed

  • Pergunta

  • Ba galera.

    estou com um problema porem o problema só acontece com o Windows 7 caso eu use o scritp que montei abaixo, o meu objetivo é que ao executar o vbs, o mesmo crie um diretorio no driver C, e logo em seguida chame o IE com um link de um arquivo para fazer download, e salvar neste caminho criado no C, com Windows XP rola legal, mais com o 7, quando o mesmo abre a janela do download, o cursor vai para a barra de tarefa me forçando mandar um alt+tab, e ja tentei mandar via sendkeys %({TAB}), mais mesmo assim o 7 nao compreende, e para na sequencia de tab para realizar a baixa do arquivo, alguem sabe como posso resolver isto no meu codigo ou alguem conhece algum codigo que realize este processo, crie uma pasta no C, e abra o IE em um link para iniciar um download, e salve neste caminho ?

    codigo.

    Option Explicit
    Dim objShell, IE, objFSO, FSO, shell

    Set objShell = CreateObject("WScript.Shell")
    Set IE = CreateObject("InternetExplorer.Application")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set shell = createobject("wscript.shell")

    WScript.Sleep 1000

    if fso.folderexists("C:\dados\") = false then
      set objfolder = fso.createfolder("C:\dados\")
    End if 


    IE.Visible = True
    IE.Navigate "http://linknainternet/arquivo.exe"

    WScript.Sleep 9000
    objShell.SendKeys "%({TAB})"

    WScript.Sleep 4000
    objShell.SendKeys "{TAB}{TAB}{TAB}{ENTER}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}c:\dados\arquivo.exe{ENTER}"

     

    obrigado galera.

    domingo, 5 de junho de 2011 22:17

Respostas

  • Vc pode estar com um problema de infra, testei o script abaixo da minha casa e do trabalho e funcionou.(Donwload do winrar)

    Repare que o script verifica o status da conexão (200), o power shell não verifica (pelo menos explicitamente).

    Set oFS = CreateObject("Scripting.FileSystemObject")
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    
    URL = "http://www.rarlabs.com/rar/wrar401.exe"
    FileSaveLocation = "c:\downloads\wrar401.exe"
    
    oXMLHTTP.open "GET", URL, false
    oXMLHTTP.send()
    If oXMLHTTP.Status = 200 Then
    	Set oADOStream = CreateObject("ADODB.Stream")
    	oADOStream.Open
    	oADOStream.Type = 1 'adTypeBinary
    	oADOStream.Write oXMLHTTP.ResponseBody
    	oADOStream.Position = 0 'Set the stream position to the start
    	If oFS.Fileexists(FileSaveLocation) Then oFS.DeleteFile FileSaveLocation
    	Set oFS = Nothing
    	oADOStream.SaveToFile FileSaveLocation
    	oADOStream.Close
    	Set oADOStream = Nothing
    End if
    Set oXMLHTTP = Nothing
    

     

     


    Fábio de Paula Junior
    • Marcado como Resposta Marcelo TI quarta-feira, 15 de junho de 2011 01:04
    segunda-feira, 13 de junho de 2011 12:21
    Moderador

Todas as Respostas

  • Você pode utilizar o objeto MSXML2.XMLHTTP

     

    Set oFS = CreateObject("Scripting.FileSystemObject")
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    
    URL = "http://linknainternet/arquivo.exe"
    FileSaveLocation = "C:\Dados\arquivo.exe"
    
    oXMLHTTP.open "GET", URL, false
    oXMLHTTP.send()
    If oXMLHTTP.Status = 200 Then
    	Set oADOStream = CreateObject("ADODB.Stream")
    	oADOStream.Open
    	oADOStream.Type = 1 'adTypeBinary
    	oADOStream.Write oXMLHTTP.ResponseBody
    	oADOStream.Position = 0 'Set the stream position to the start
    	If oFS.Fileexists(FileSaveLocation) Then oFS.DeleteFile FileSaveLocation
    	Set oFS = Nothing
    	oADOStream.SaveToFile FileSaveLocation
    	oADOStream.Close
    	Set oADOStream = Nothing
    End if
    Set oXMLHTTP = Nothing
    

     

    Links:

    http://blog.netnerds.net/2007/01/vbscript-download-and-save-a-binary-file/


    http://www.vbforums.com/showthread.php?t=459294


    Fábio de Paula Junior
    • Sugerido como Resposta Fábio JrModerator segunda-feira, 6 de junho de 2011 11:45
    • Não Sugerido como Resposta Marcelo TI sábado, 11 de junho de 2011 15:22
    • Sugerido como Resposta Fábio JrModerator segunda-feira, 13 de junho de 2011 12:23
    segunda-feira, 6 de junho de 2011 11:42
    Moderador
  • Exemplo em PowerShell (.ps1)

     

    $Dir_Destino = "C:\Dados"
    
    if (-not(Test-Path $Dir_Destino)){mkdir $Dir_Destino}
    
    $clnt = new-object System.Net.WebClient
    
    $url = "http://linknainternet/arquivo.exe"
    $file = "$Dir_Destino\arquivo.exe"
    
    $clnt.DownloadFile($url,$file)
    

    Fábio de Paula Junior
    segunda-feira, 6 de junho de 2011 14:15
    Moderador
  • Fábio

    Vc tem outra ideia, esta sua pode ate ser a solução mais pra min não rolou, pois quando salvo em vbs o conteudo todo, o antivirus apaga o arquivo, e gravando linha a linha, consegui chegar a mesma que esta gerando o sintoma.

    oADOStream.SaveToFile FileSaveLocation

    e mesmo se eu salvo o arquivo com o antivirus parado e compilo o vbs em exe e vou executar com o antivirus ligado, ele nao faz nada, e nao inicia o download.

     

    obrigado.

    sábado, 11 de junho de 2011 15:25
  • Vou fazer um teste com o powerShell.
    sábado, 11 de junho de 2011 15:26
  • Vc pode estar com um problema de infra, testei o script abaixo da minha casa e do trabalho e funcionou.(Donwload do winrar)

    Repare que o script verifica o status da conexão (200), o power shell não verifica (pelo menos explicitamente).

    Set oFS = CreateObject("Scripting.FileSystemObject")
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    
    URL = "http://www.rarlabs.com/rar/wrar401.exe"
    FileSaveLocation = "c:\downloads\wrar401.exe"
    
    oXMLHTTP.open "GET", URL, false
    oXMLHTTP.send()
    If oXMLHTTP.Status = 200 Then
    	Set oADOStream = CreateObject("ADODB.Stream")
    	oADOStream.Open
    	oADOStream.Type = 1 'adTypeBinary
    	oADOStream.Write oXMLHTTP.ResponseBody
    	oADOStream.Position = 0 'Set the stream position to the start
    	If oFS.Fileexists(FileSaveLocation) Then oFS.DeleteFile FileSaveLocation
    	Set oFS = Nothing
    	oADOStream.SaveToFile FileSaveLocation
    	oADOStream.Close
    	Set oADOStream = Nothing
    End if
    Set oXMLHTTP = Nothing
    

     

     


    Fábio de Paula Junior
    • Marcado como Resposta Marcelo TI quarta-feira, 15 de junho de 2011 01:04
    segunda-feira, 13 de junho de 2011 12:21
    Moderador
  • Fabio

    vou marcar sua resposta como certa pos o codigo pode estar certo mais não me atende e o problema não é infraestrutura, o problema é que o antivirus apaga o arquivo quando eu vou salvar ele como vbs ou txt contendo estas palavras.

    "SaveToFile FileSaveLocation"

    valeu pela força

    quarta-feira, 15 de junho de 2011 01:05
  • Se é antivirus o problema não é o script.

    Procure ajuda com o fornecedor ou no fórum do antivirus.

    E o teste com o Powershell?


    Fábio de Paula Junior

    quarta-feira, 15 de junho de 2011 17:43
    Moderador