IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

VBS Téléchargement application


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut VBS Téléchargement application
    Bonjour à tous voilà mon idée de base...

    Télécharger un ensemble d'application (exe) provenant de lien html vers un répertoire X de mon ordi...Actuellement j'ai un script qui le fait mais auquel j'aimerais modifier quelques éléments.

    De base le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    HTTPDownload "http://le_lien_du.exe" , "C:\le\répertoire\Logiciels\1\"
     
    Sub HTTPDownload( myURL, myPath )
     
    ' Written by Rob van der Woude
    ' http://www.robvanderwoude.com
     
        ' Standard housekeeping
        Dim i, objFile, objFSO, objHTTP, strFile, strMsg
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
     
        ' Create a File System Object
        Set objFSO = CreateObject( "Scripting.FileSystemObject" )
     
        ' Check if the specified target file or folder exists,
        ' and build the fully qualified path of the target file
        If objFSO.FolderExists( myPath ) Then
            strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
        ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
            strFile = myPath
        Else
            WScript.Echo "ERROR: Target folder not found."
            Exit Sub
        End If
     
        ' Create or open the target file
        Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
     
        ' Create an HTTP object
        Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
     
        ' Download the specified URL
        objHTTP.Open "GET", myURL, False
        objHTTP.Send
     
        ' Write the downloaded byte stream to the target file
        For i = 1 To LenB( objHTTP.ResponseBody )
            objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
        Next
     
        ' Close the target file
        objFile.Close( )
    End Sub
    J'aimerais pouvoir télécharger plusieurs application à partir du même script...mais les télécharger dans des répertoires différents
    De même j'aimerais que si l'application est présente, (il y a comparaison des 2 versions) l'exécution passe à la suivante...

    petite info je remarque que le processus wscript.exe ne se termine pas après exécution...

    Pour le moment je lance plusieurs .vbs (pour chacune des application que je veux télécharger) à l'aide d'un batch et à la fin du batch je kill le process mais encore ça ne fonctionne pas

    Bon voilà...je tente de visualiser le tout mais aimerait avoir des idées

    Merci

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    il vous suffit d’appeler la fonction dans le même script
    HTTPDownload( myURL, myPath )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    HTTPDownload "http://le_lien1_du.exe" , "C:\le\répertoire\Logiciels\1\"
    HTTPDownload "http://le_lien2_du.exe" , "C:\le\répertoire\Logiciels\2\"
    HTTPDownload "http://le_lien3_du.exe" , "C:\le\répertoire\Logiciels\3\"
    HTTPDownload "http://le_lien4_du.exe" , "C:\le\répertoire\Logiciels\4\"
    .
    .
    .
    HTTPDownload "http://le_lien(N)_du.exe" , "C:\le\répertoire\Logiciels\(N)\"
     
    Sub HTTPDownload( myURL, myPath )
    .
    .
    .
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci hackoofr je tente de faire ainsi mais depuis le script ne fait que télécharger les 2 premières applications et rien ne se passe par la suite...

    Une idée? Pourtant lancé seul (juste en indiquant la troisième application) le téléchargement se fait bien pour cette application?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon étant donné que je n'ai pas trouvé la raison pour que le download passe le second fichier...je me suis tournée vers l'appl http://www.gnu.org/software/wget/

    Qui en ligne de commande sous batch me permet de télécharger ce que je veux

    Merci

  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par JFMichaud Voir le message
    Bon étant donné que je n'ai pas trouvé la raison pour que le download passe le second fichier...je me suis tournée vers l'appl http://www.gnu.org/software/wget/
    Qui en ligne de commande sous batch me permet de télécharger ce que je veux
    Merci

    C'est quoi comme version que vous avez téléchargé ?
    pouvez-vous nous communiquer un lien direct de la dernière version de Wget et c'est quoi comme script Batch que vous avez fait ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par hackoofr Voir le message

    C'est quoi comme version que vous avez téléchargé ?
    pouvez-vous nous communiquer un lien direct de la dernière version de Wget et c'est quoi comme script Batch que vous avez fait ?

    WGet http://opensourcepack.blogspot.com/2...r-windows.html lien direct de téléchargement http://dl.dropbox.com/u/2554170/wget-1.13.1.exe

    Et la version que j'ai utilisé à la base http://gnuwin32.sourceforge.net/packages/wget.htm

    et mon batch...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    pause
    cd "C:\Program Files (x86)\GnuWin32\bin"
    wget --append-output=C:\Users\blabla\Desktop\storage\Logiciels\File.txt -P C:\Users\blabla\Desktop\storage\Logiciels\7Zip http://downloads.sourceforge.net/sevenzip/7z920.exe
    Simple batch file dos

    J'ai un autre script qui vérifie la version téléchargé avec celle en production (autre répertoire) et copie celle qui est la plus récente par après le output est placé dans un fichier log et le tout est affiché a l'écran avec les différences s'il y a.

  7. #7
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Le rendement de HTTPDownload est probablement daté - en tout cas, il n'est pas très apt d'utilser scripting.filesystemobject de traiter un stream a priori binaire.

    Voici ce que j'écrirais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    'Ici myPath doit être un fichier destiné avec le parcours si nécessaire
    Sub HTTPDownload( myURL, myPath )
        dim oxmlhttp, ostream
        set oxmlhttp=createobject("msxml2.xmlhttp")
        with oxmlhttp
            .open "GET", myURL, False
            .send
            if .status = 200 then
                set ostream=createobject("adodb.stream")
                ostream.type=1    'adTypeText=2, adTypeBinary=1
                'ostream.mode=3    'adModeReadWrite=3
                ostream.open 
                ostream.write .responseBody
                ostream.SaveToFile myPath,2    'adSaveCreateOverWrite=2, without, error if file exists.
                ostream.close
                set ostream=nothing
            end if
        end with
        set oxmlhttp=nothing
    End Sub
    Avec responseBody binaire proprement travaillé, je ne vois pas la raison de soucis du numbre magique de limite 2 qui semble suggéré pour une raison obscure.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script VBS listing applications/logiciels installés
    Par vince91170 dans le forum VBScript
    Réponses: 2
    Dernier message: 30/11/2010, 15h15
  2. [VBS] InternetExplorer.Application introuvable
    Par bodbod dans le forum VBScript
    Réponses: 5
    Dernier message: 08/12/2008, 09h14
  3. probleme de lancement d'application en vbs
    Par tese84 dans le forum VBScript
    Réponses: 3
    Dernier message: 10/07/2007, 16h40
  4. [VBS] Lancement d'application
    Par OverCat dans le forum VBScript
    Réponses: 1
    Dernier message: 13/02/2006, 22h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo