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 :

Gestion erreur VBS 7zip


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 116
    Par défaut Gestion erreur VBS 7zip
    Bonjour à tous,
    J'ai créé un script pour faire un gros traitement.
    Dans ma gestion d'erreur, je veux envoyer un mail en cas de problème.
    Jusque là, pas de soucis.
    Mon soucis viens de la partie de code qui va zipper mon dossier via 7zip. Il fait bien le traitement mais mon script continu les étapes même si la compression n'est pas fini. Du coup, la gestion d'erreur ne se fait pas correctement.
    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
    'ZIP du dossier
    On Error Resume Next
     
    LogFile.writeline(now & ": Début de la compression du fichier")
    LogFile.writeline("")
    WScript.Echo(now & ": Début de la compression du fichier")
     
    Dim CheminDossierAZip
    CheminDossierAZip = "C:\Users\xxxxx\" & DateRemaniee
    Dim CheminDest
    CheminDest = "C:\Users\xxxxx\Desktop\Nouveau dossier\7zip\"
    Dim ObjShell 
    Set ObjShell = CreateObject("WScript.shell") 
    ObjShell.Exec "C:\Program Files\7-Zip\7z.exe a -r " & chr(34) & CheminDest & DateRemaniee & chr(34) & " " & chr(34) & CheminDossierAZip   'lance bien la compression puis passe à l'étape calcul j-3 alors que la compression n'est pas finie
     
    If Err.Number <> 0 Then
     LogFile.writeline(now & ": Erreur lors de la compression du fichier")
     LogFile.writeline ""
      WScript.echo (now & ": Erreur lors de la compression du fichier")
     
    Corps1 = "Une erreur est survenue lors de la compression du dossier " & DateRemaniee & "."
    Corps2 = "Ceci est un message automatique. Merci de ne pas répondre."
    PJ = "C:\Users\xxxxx\Desktop\Nouveau dossier\Logs\" & Dateremaniee & ".txt"
     call Email("xxxxxxx","Erreur de sauvegarde perturbo","xxxxx",Corps1 & chr(13) & chr(13) & Corps2, PJ)
     Err.Clear
     wscript.Quit
    End If
     
    On Error Goto 0
     
    ' Calcule jour -3 pour suppression dossier
    YesterdayDate = now - 3
    annee = Right(String(2, "0") & Year(YesterdayDate), 2)
    mois = Right(String(2, "0") & Month(YesterdayDate), 2)
    jour = Right(String(2, "0") & Day(YesterdayDate), 2)
    DateRemaniee = "" & annee & mois & jour
    Comment faire pour qu'il soit en attente d'un retour de 7zip? Si c'est possible bien sur.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Fonction de surveillance d'un process en court d'execution, True si en cours False terminé.
    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
    Function Proccess(nomfichier)
    dim objWMIService
    dim ProcessEncours
    dim strComputer
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set ProcessEncours = objWMIService.ExecQuery ("Select name from Win32_Process where name ='" & nomfichier & "'")
    Set objWMIService = NotHing
     
    If ProcessEncours.Count <> 0 Then Proccess = True Else Proccess = False
     
    Set ProcessEncours = NotHing
     
    End Function
    Son utilisation (lignes 16 à 18):
    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
    'ZIP du dossier
    On Error Resume Next
     
    LogFile.writeline(now & ": Début de la compression du fichier")
    LogFile.writeline("")
    WScript.Echo(now & ": Début de la compression du fichier")
     
    Dim CheminDossierAZip
    CheminDossierAZip = "C:\Users\xxxxx\" & DateRemaniee
    Dim CheminDest
    CheminDest = "C:\Users\xxxxx\Desktop\Nouveau dossier\7zip\"
    Dim ObjShell 
    Set ObjShell = CreateObject("WScript.shell") 
    ObjShell.Exec "C:\Program Files\7-Zip\7z.exe a -r " & chr(34) & CheminDest & DateRemaniee & chr(34) & " " & chr(34) & CheminDossierAZip   'lance bien la compression puis passe à l'étape calcul j-3 alors que la compression n'est pas finie
     
    Do While Proccess("7z.exe") = True 'boucle tant que l’exécutable n'est pas terminé/fermé
        Wscript.Sleep 100 'attente de 0.1Sc
    loop
     
    If Err.Number <> 0 Then
    '..........
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre confirmé Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 116
    Par défaut
    Merci pour ta réponse.
    Le soucis, c'est que je ne sais pas si la compression c'est passé correctement ou si une erreur est survenue.
    Mais bien déjà pour que mon script ne se finisse pas avant.

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Citation Envoyé par tequillaman Voir le message
    Merci pour ta réponse.
    Le soucis, c'est que je ne sais pas si la compression c'est passé correctement ou si une erreur est survenue.
    ......
    une fois sortie de la boucle Do....Loop, peut être vérifier si le ficher compressé existe et s'il à un poids non égal à 0 octet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function ZipOk(filespec)
        Dim fso, f, poids
        ZipOk = False
     
        Set fso = CreateObject("Scripting.FileSystemObject")
        If (fso.FileExists(filespec)) Then
            Set f = fso.GetFile(filespec)
            poids = f.Size
            Set f = Nothing
            If poids <> 0 Then ZipOk = True
        End If
        Set fso = Nothing
    End Function
    En changeant If Err.Number <> 0 Then part If Err.Number <> 0 Or ZipOk(CheminDest & "FichierZiper.zip") = False Then tu auras déjà pas mal de chance d'avoir géré la chose.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Comme d'habitude, pour fait de la compression/décompression en ligne via 7-zip, je conseillerai d'utiliser l'outil fait pour cela 7za.exe

    http://www.7-zip.org/download.html

  6. #6
    Membre confirmé Avatar de tequillaman
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2016
    Messages : 116
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Comme d'habitude, pour fait de la compression/décompression en ligne via 7-zip, je conseillerai d'utiliser l'outil fait pour cela 7za.exe

    http://www.7-zip.org/download.html
    Merci pour l'info mais je en connais pas du tout et je n'ai pas vu de bon commentaire dessus ni sur l'utilisation, ni sur la sécurité. Du coup, je préfère m'en passer.


    Merci ProgElecT je vais utiliser ta solution en ajoutant un test d'ouverture et de fermeture du ZIP comme sa, je serais certain qu'il est terminé.
    Sauf erreur de ma part, si le zip ne se termine pas correctement, on ne peut pas l'ouvrir. VRAI?

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

Discussions similaires

  1. Gestion erreur SQL Serveur dans un Script VBS
    Par jayan dans le forum VBScript
    Réponses: 3
    Dernier message: 08/02/2007, 14h06
  2. Aide sur gestion erreur
    Par Virgile59 dans le forum Access
    Réponses: 6
    Dernier message: 05/01/2006, 18h05
  3. [Formulaire] Gestion erreur saisie d'une requête
    Par b_steph_2 dans le forum IHM
    Réponses: 6
    Dernier message: 05/01/2006, 16h40
  4. [Sécurité] gestion erreur login mdp
    Par oceane751 dans le forum Langage
    Réponses: 19
    Dernier message: 03/11/2005, 11h58
  5. Question Basique Gestion Erreur VBA ...
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 11/10/2005, 13h42

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