Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2012
    Messages : 284
    Points : 88
    Points
    88

    Par défaut Concatener 2 fichiers texte

    Bonjour,

    J'ai 2 fichiers textes générés par les commandes :

    netsh dhcp show all >> dhcp_all.txt
    netsh dhcp show scopes >> dhcp_scopes.txt

    Que je met en page à la volée.

    Le premier contient :
    Subnet Used IP Adress Free IP_Adress
    192.168.1.0 4 250
    192.168.2.0 250 4
    192.168.3.0 100 154
    192.168.4.0 200 54
    Le second contient :

    Subnet Name Subnet State Description Comment
    vlan1 192.168.1.0 Active PRODUCTION Vlan Paris
    vlan2 192.168.2.0 Disabled SECOURS Vlan Lyon
    vlan3 192.168.3.0 Active PRODUCTION Vlan Marseille
    vlan4 192.168.4.0 Disabled BACKUP Vlan Rennes
    Comment faire en vbs pour concaténer les 2 et obtenir ceci :

    Subnet Name Subnet State Description Comment Used IP Adress Free IP_Adress
    vlan1 192.168.1.0 Active PRODUCTION Vlan Paris 4 250
    vlan2 192.168.2.0 Disabled SECOURS Vlan Lyon 250 4
    vlan3 192.168.3.0 Active PRODUCTION Vlan Marseille 100 154
    vlan4 192.168.4.0 Disabled BACKUP Vlan Rennes 200 54

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 480
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 480
    Points : 5 767
    Points
    5 767

    Par défaut

    Salut

    J'ai fait des commentaires dans le code, un copier/coller, mais surtout une réflexion/analyse pour adapter à ton besoin.
    Code :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    '------------------------------------------------------------------------------------------------
    'partie principale du programme
    Const ForReading = 1, ForWriting = 2
    Dim oFso, F1, F2, F3
    Dim Fichier1, Fichier2, Fichier3, T
    Set oFso = CreateObject("Scripting.FileSystemObject")
     
    'Ouverture et lecture du fichier
        Set F1 = oFso.OpenTextFile("C:\PersoFrancis\test1.txt", ForReading)
            'recuperation d'un tableau de x lignes
            Fichier1 = F1.ReadAll
            F1.Close
            Set F1 = Nothing
     
    'Ouverture et lecture du fichier
        Set F2 = oFso.OpenTextFile("C:\PersoFrancis\test2.txt", ForReading)
            'recuperation d'un tableau de x lignes
            Fichier2 = F2.ReadAll
            F2.Close
            Set F2 = Nothing
     
    'Écriture du fichier
        Set F3 = oFso.OpenTextFile("C:\PersoFrancis\test3.txt", ForWriting)
            'recuperation d'un tableau de x lignes
            F3.Write FichierSortie(Fichier1, Fichier2)
            F3.Close
            Set F3 = Nothing
     
    Set oFso = Nothing
    '------------------------------------------------------------------------------------------------
     
     
    '----------- Fonction qui transforme au format du fichier à obtenir en sortie -------------------
    Function FichierSortie(Fich1, Fich2)
    Dim Tbl1, Tbl2, TblColonne, T
    'MEMO
    'Fich1 = "Subnet Name Subnet State Description Comment" & vbNewLine & _
    '            "vlan1 192.168.1.0 Active PRODUCTION Vlan Paris" & vbNewLine & _
    '            "vlan2 192.168.2.0 Disabled SECOURS Vlan Lyon" & vbNewLine & _
    '            "vlan3 192.168.3.0 Active PRODUCTION Vlan Marseille" & vbNewLine & _
    '            "vlan4 192.168.4.0 Disabled BACKUP Vlan Rennes"
    'Fich2 = "Subnet Used IP Adress Free IP_Adress" & vbNewLine & _
    '            "192.168.1.0 4 250" & vbNewLine & _
    '            "192.168.2.0 250 4" & vbNewLine & _
    '            "192.168.3.0 100 154" & vbNewLine & _
    '            "192.168.4.0 200 54"
     
    'but à atteindre
    'FichierSortie = Subnet Name Subnet State Description Comment Used IP Adress Free IP_Adress
                'vlan1 192.168.1.0 Active PRODUCTION Vlan Paris 4 250
                'vlan2 192.168.2.0 Disabled SECOURS Vlan Lyon 250 4
                'vlan3 192.168.3.0 Active PRODUCTION Vlan Marseille 100 154
                'vlan4 192.168.4.0 Disabled BACKUP Vlan Rennes 200 54
     
    Tbl1 = Split(Fich1, vbNewLine)'éclate le contenu ligne par ligne du fichier 1
    Tbl2 = Split(Fich2, vbNewLine)'éclate le contenu ligne par ligne du fichier 2
     
    Tbl2(0) = Replace(Tbl2(0), "Subnet", "")'supprime "Subnet" de la première ligne du fichier N°2
    FichierSortie = Tbl1(0) & Tbl2(0) 'création de la première ligne
     
    For T = 1 To UBound(Tbl1)
        TblColonne = Split(Tbl2(T), " ")'éclate le contenu de la ligne
        'Ajout des lignes suivantes     
        FichierSortie = FichierSortie & vbNewLine & Tbl1(T) & " " & TblColonne(1) & " " & TblColonne(2)
    Next
    End Function
    '------------------------------------------------------------------------------------------------

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2012
    Messages : 284
    Points : 88
    Points
    88

    Par défaut

    Parfait, merci pour ton aide.

    Effectivement il me fallait une base pour voir comment procéder.

    A ce stade si je l'execute ca me sort :

    Subnet Used IP Adress Free IP_Adress Name State Description Comment
    192.168.1.0 4 250 192.168.1.0 Active
    192.168.2.0 250 4 192.168.2.0 Disabled
    192.168.3.0 100 154 192.168.3.0 Active
    192.168.4.0 200 54 192.168.4.0 Disabled
    Il manque donc des infos comme :

    Name State Description Comment

    Je vais regarder ca et je te dis ca demain.

    Merci encore.

  4. #4
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 480
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 480
    Points : 5 767
    Points
    5 767

    Par défaut

    Salut

    Attention, pour des raison de facilité, il faut considérer l'inversement de l'appel en ouverture des 2 fichiers de base.
    Fichier1 corespond au 2° fichier, donc fichier2 devient ton 1° fichier (comme sugéré dans la partie MEMO de la fonction).
    ligne 23 du programme proposé, ajouter True pour l'ouverture du fichier résultat (si un nouveau fichier est créé, par la suite cela ne poserai plus de probléme).
    Code :
        Set F3 = oFso.OpenTextFile("C:\PersoFrancis\test3.txt", ForWriting, True)

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2012
    Messages : 284
    Points : 88
    Points
    88

    Par défaut

    Parfait, merci !

    Code :
    1
    2
    3
    4
    5
    6
    7
    Tbl1 = Split(Fichier1, vbNewLine)'éclate le contenu ligne par ligne du fichier 1
    Tbl2 = Split(Fichier2, vbNewLine)'éclate le contenu ligne par ligne du fichier 1
     
    For T = 0 To UBound(Tbl1)-1
    	result = Tbl1(T) & vbtab & Tbl2(T)
    	F3.writeline result
    Next

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •