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 :

Concatener 2 fichiers texte


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    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 : 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
    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
    '------------------------------------------------------------------------------------------------
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    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
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
        Set F3 = oFso.OpenTextFile("C:\PersoFrancis\test3.txt", ForWriting, True)
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 284
    Points : 132
    Points
    132
    Par défaut
    Parfait, merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. Concaténer deux fichiers Ligne/Ligne avec SH
    Par guiltouf dans le forum Linux
    Réponses: 7
    Dernier message: 22/05/2007, 14h35
  2. Réponses: 1
    Dernier message: 12/02/2003, 09h36
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17

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