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 :

Conditionnement de commandes DOS dans un script vbs ?


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut Conditionnement de commandes DOS dans un script vbs ?
    Bonjour,

    Dans un script VBS qui, en gros, cherche un fichier pour y passer, en ligne de commande, une moulinette "AWStats" (Perl) qui génére un autre fichier qui sera utilisée pour updater un fichier de stats (une autre ligne de commande)...

    Voici un extrait du script (qui fonctionne ):

    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
    ' Search and convert exchange log 
    If fso.FileExists(exchange_log_directory & filenametosearch) Then
        ' If file exists, run awstats convert tool : maillogconvert.pl'
        Dim osShell,awstat_converted_log_directory,cmd_line_goto_directory, cmd_line_run_awstats_tool,fichier_conf_aws
        awstat_converted_log_directory = "C:\Inetpub\wwwroot\AWStats\converted_mail_log\"
        Set osShell = CreateObject("WScript.Shell")
        cmd_line_goto_directory = "cmd /C CD C:\Inetpub\wwwroot\AWStats\tools"
        cmd_line_run_awstats_tool = "& maillogconvert.pl standard " & exchange_log_directory & filenametosearch & " > " & awstat_converted_log_directory & filenametosearch
        osShell.Run cmd_line_goto_directory & cmd_line_run_awstats_tool, 0, true
        Set osShell = Nothing
        f.WriteLine(Now() & " - Conversion de la log Exchange : " & exchange_log_directory & filenametosearch )
        f.WriteLine(Now() & " - dans : " & awstat_converted_log_directory & filenametosearch)
     
            ' Search converted log and create awstats datas file 
            If fso.FileExists(awstat_converted_log_directory & filenametosearch) Then
                ' If file exists, run awstats tool : awstats.pl'
                Set osShell = CreateObject("WScript.Shell")
                fichier_conf_aws = "messagerie-exchange"
                cmd_line_goto_directory = "cmd /C CD C:\Inetpub\wwwroot\AWStats\cgi-bin"
                cmd_line_run_awstats_tool = "& awstats.pl -config=" & fichier_conf_aws & " -update"
                osShell.Run cmd_line_goto_directory & cmd_line_run_awstats_tool, 0, true
                Set osShell = Nothing
                f.WriteLine(Now() & " - Mise a jour des stats AWSTats avec le fichier : " & fichier_conf_aws )
            End If  
    Else
        f.WriteLine(Now() & " - Pas de log Exchange trouvee : " & exchange_log_directory & filenametosearch )
    End If
    mais, étant novice en VBS et après avoir consulté moult ressources (ici et ailleurs), j'aimerais savoir si cette façon de faire est correcte et si, d'après ce que j'ai compris, le paramètre "true" (osShell.Run xxxxxxxxxxxxx, 0, true ) suffit à ne lancer la seconde ligne de commande qu'à la fin de l'éxecution de la première ?

    Si le programme lancé en ligne de commande se plante, comment récupérer un code erreur ?

    D'autre part, à propos de la méthode "Run" la doc Win. dit ceci : -"The Run method returns an integer. " oui, mais qui correspond à quoi ? (temps d'éxec. en milisecondes ou ... ?)

    Avec mes remerciements,

    Cordialement,

    Thierry

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Si l'argument facultatif bWaitOnReturn est défini sur False, la méthode Run renvoie le code 0 et n'attend pas la fin du traitement, sinon, la méthode Run attend la fin du traitement et renvoie tout code d'erreur renvoyé par l'application. L'exemple suivant ouvre le script en cours dans une instance du bloc-note :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run ("%windir%\notepad" & WScript.ScriptFullName, 1, TRUE)

    Donc oui "True" permet d'attendre la fin d'exécution du programme lancé, et dans ce cas, Run renvois 0 ou un code d'erreur.
    0 = tout c'est bien passé.
    Si je ne me trompe pas Run renverra le code d'erreur renvoyé par le programme lancé, donc ....

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Donc oui "True" permet d'attendre la fin d'exécution du programme lancé, et dans ce cas, Run renvois 0 ou un code d'erreur.
    0 = tout c'est bien passé.
    Si je ne me trompe pas Run renverra le code d'erreur renvoyé par le programme lancé, donc ....
    Ok, c'est bien cela, merci davoir répondu.

    Cordialement,

    Thierry

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

Discussions similaires

  1. éxecution de commande MS-dos dans un Script VBS
    Par teurpi dans le forum VBScript
    Réponses: 3
    Dernier message: 02/01/2012, 15h29
  2. Commande dos dans un script VBS
    Par fruty91 dans le forum VBScript
    Réponses: 3
    Dernier message: 23/10/2009, 09h39
  3. Réponses: 3
    Dernier message: 22/10/2004, 12h04
  4. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 22h28
  5. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08

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