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 pour fusionner le contenu de 2 fichiers avec correspondance


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut vbs pour fusionner le contenu de 2 fichiers avec correspondance
    Bonjour,

    N'ayant aucune notion vbs, je m'excuse d'avance et vais essayer de donner un maximum d'explications !
    Je souhaite fusionner 2 informations contenus dans 2 fichiers.
    Cela me permettra de connaitre l'état d'une sauvegarde et le quota utilisé sur le NAS pour chaque sauvegarde.

    J'ai 2 fichiers : file1.txt et file2.txt

    dans le file1.txt, j'ai du texte :
    La sauvegarde du poste ABC s'est bien déroulée
    La sauvegarde du poste BCD s'est déroulée avec des erreurs
    La....

    dans le file2.txt j'ai un texte du type :
    ABC 0,5 Gb sur 2 Gb
    BCD 4 Gb sur 3 Gb

    Dans chaque fichier, le nom du poste est identique.

    j'aimerai avoir au final une dernier fichier file3.txt avec le texte :
    La sauvegarde du poste ABC s'est bien déroulée avec succès utilisant 0,5 Gb sur 2 Gb
    La sauvegarde du poste BCD s'est déroulée avec des erreurs utilisant 4 Gb sur 3 Gb

    et vraiment dans l'idéal si c'est pas trop compliqué
    La sauvegarde du poste ABC s'est bien déroulée avec succès utilisant 0,5 Gb sur 2 Gb soit 25%
    La sauvegarde du poste BCD s'est déroulée avec des erreurs utilisant 4 Gb sur 3 Gb soit 150%

    Afin d'obtenir ces quotas, j'utilise le vbs suivant (si ca peut etre utile) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set oFs=CreateObject("Scripting.FileSystemObject")
    Set oFolder=oFs.GetFolder("\\ADRESSE-IP-NAS\Backup\ABC")
    totalSize=totalSize + oFolder.Size / 1073741824
    WScript.Echo "ABC " & Round(totalSize, 2) & " Gb" & " sur 2 Gb"
    et un second vbs pour le poste BCD et ainsi de suite, les résultats de chaque vbs seront contenus dans le file2.txt

    Je vous remercie d'avance pour votre aide !

    Cdt
    ps je rappel que je n'ai que très peu de notions et essayerai au max de tester vos solutions.

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 840
    Points : 9 225
    Points
    9 225
    Par défaut

    Voici un exemple de code Vbscript qui effectue cette opération :
    Notez que ce code suppose que la structure des fichiers est toujours la même pour chaque ligne et que les colonnes sont séparées par des espaces.
    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
    Const ForReading = 1
    Const ForWriting = 2
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    Set objFile1 = objFSO.OpenTextFile("file1.txt", ForReading)
    Set objFile2 = objFSO.OpenTextFile("file2.txt", ForReading)
    Set objFile3 = objFSO.OpenTextFile("file3.txt", ForWriting, True)
     
    Do Until objFile1.AtEndOfStream
        strLine1 = objFile1.ReadLine
        strLine2 = objFile2.ReadLine
        arrData1 = Split(strLine1, " ")
        arrData2 = Split(strLine2, " ")
     
        etat = "La sauvegarde du " & arrData1(3) & " " & arrData1(4) & " " & arrData1(5) & " " & arrData1(6) & " " & arrData1(7)
        used = CDbl(arrData2(1))
        total = CDbl(arrData2(4))
        pourcentage = Round((used / total) * 100,2)
     
        If pourcentage > 100 Then
            etat = etat & " des erreurs"
        Else
            etat = etat & " avec succès"
        End If
     
        objFile3.WriteLine etat & " utilisant " & used & " Gb sur " & total & " Gb soit " & pourcentage & "%"
    Loop
     
    objFile1.Close
    objFile2.Close
    objFile3.Close
     
    Msgbox "Script completed",vbInformation+vbSystemModal,"fusioner deux fichiers"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup !!!

    Après quelques tests et me basant sur votre script, j'ai réussit à obtenir le résultat voulu.
    Visiblement, il faut que mes textes aient le même nombre de mot.
    Un arrData ayant un nombre trop élevé revient en erreur d’exécution

    J'ai adapté le texte de mon fichier 1 pour pallier à ça.

    Encore un grand Merci pour votre aide rapide et efficace.

    Je classe comme étant résolu

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 304
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 304
    Points : 1 905
    Points
    1 905
    Par défaut
    tu pourrais te passer du split sur strLine1 et mettre directement etat = strLine1, tu reprends ainsi la ligne complète du fichier1
    les arrData(x) sont les différents mot de la ligne en partant l'indice 0 (0=> 1er mot, 1=> 2nd mot, etc)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2016
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 29
    Points : 14
    Points
    14
    Par défaut
    merci pour cette astuce, je testerai ça dès que possible

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/04/2016, 19h46
  2. Réponses: 12
    Dernier message: 02/01/2008, 13h16
  3. Réponses: 6
    Dernier message: 17/07/2007, 21h15
  4. [Reseau]FTPClient pour afficher le contenu d'un fichier
    Par boxsters dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 21/06/2006, 11h12
  5. aide pour lire le contenu d'un fichier de base de donnée
    Par hichamo dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 11/05/2006, 10h01

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