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 :

Réécriture des fichiers


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 34
    Points : 29
    Points
    29
    Par défaut Réécriture des fichiers
    Bonjour,

    Je veux mettre un script VB qui permet de transformer mes fichiers initialement sous le format suivant:

    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
     
    <Directory /path1/ >
            ProxyPass        http://@URL@/ retry=0
            ProxyPassReverse http://@URL@/
            ProxyPassReverseCookiePath / /path1/
    </Directory>
     
    <location /path2/ >
            ProxyPass        http://@URL@/ retry=0
            ProxyPassReverse http://@URL@/
            ProxyPassReverseCookiePath / /path2/
    </Directory>
     
    <location /path3/ >
            ProxyPass        http://@URL@/ retry=0
            ProxyPassReverse http://@URL@/
     </Directory>
    au format suivant:
    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
     
            ProxyPass      /path1/  http://@URL@/ retry=0
            ProxyPassReverse /path1/ http://@URL@/
     
     <Directory /path1/ >
     
            ProxyPassReverseCookiePath / /path1/
    </Directory>
     
            ProxyPass    /path2/    http://@URL@/ retry=0
            ProxyPassReverse /path2/ http://@URL@/
    <location /path2/ >
     
            ProxyPassReverseCookiePath / /path2/
    </Directory>
     
             ProxyPass      /path3/  http://@URL@/ retry=0
             ProxyPassReverse /path3/ http://@URL@/
    Donc le script permet de :
    • supprimer la balise Location ou Directory s'ils sont vides
    • Respecter la casse de path


    Voici mon bout de code:
    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
    68
    69
    70
    71
    72
     
    Sub test()
     
    svn_path = Range("A1")
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
     
    Set FS = CreateObject("Scripting.FileSystemObject")
    Set FSfolder = FS.GetFolder(svn_path)
     
     
     
    For Each subfolder In FSfolder.SubFolders
        'backup file.conf
        FromPath = subfolder & "\file.conf"
        ToPath = subfolder & "\file.conf.bak"
     
        If (FS.FileExists(FromPath)) Then
     
            FS.CopyFile Source:=FromPath, Destination:=ToPath
     
     
            Set ff = FS.GetFile(subfolder & "\file.conf")
            If ff.Size <> 0 Then
                Set f = ff.OpenAsTextStream(ForReading, 0)
                jct = f.readall
                jct2 = Split(jct, vbLf)
                jct_loc = ""
                jct_hors = ""
                f.Close
     
                Set f = ff.OpenAsTextStream(ForWriting, 0)
     
                For n = 0 To UBound(jct2)
                    m = jct2(n)
     
                    If InStr(1, m, "<Location") Then
                        loca = Split(m, " ")
                    End If
     
     
                    If InStr(1, LCase(m), "proxypass") Then
                        m = Replace(LCase(m), "proxypass ", "proxypass " & loca(1) & " ")
                        m = Replace(LCase(m), "proxypassreverse ", "proxypassreverse " & loca(1) & " ")
                        jct_hors = jct_hors & vbLf & m
                    Else
                        jct_loc = jct_loc & vbLf & m
                    End If
                Next n
     
     
                tst = Split(jct_loc, vbLf)
                If UBound(tst) = 2 Then
                    jct_loc = ""
                End If
     
     
                jct_hors = Replace(jct_hors, "proxypassreverse", "ProxyPassReverse")
                jct_hors = Replace(jct_hors, "proxypass", "ProxyPass")
                f.Write jct_hors & vbLf & jct_loc
                f.Close
     
            End If
     
        End If
     
    Next subfolder
     
    End Sub
     
    Private Sub CommandButton1_Click()
        test
    End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2011
    Messages : 163
    Points : 304
    Points
    304
    Par défaut
    Bonjour,

    D'abord je n'ai pas tout compris à ton besoin. Néanmoins, un traitement ligne à ligne semble suffisant.
    L'idée est de lire la ligne du fichier entrant, de la formater en minuscules, d'effectuer les tests que tu souhaites et de la réécrire dans le fichier destination, dans la foulée.
    Voici pour l'exemple :

    Dim oFSO, ecr, lect

    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set lect = oFSO.OpenTextFile(FromPath, ForReading)
    Set ecr = oFSO.OpenTextFile(ToPath, ForWriting)
    While Not lect.AtEndOfStream
    	Texte = lect.ReadLine 'Lecture ligne par ligne
    	Texte = lcase(Texte) 'Valeur de la ligne en minuscules
    	if Texte = Ta_Condition Then 'Test de valeur de la ligne
                    ' Modification éventuelle de la valeur de la ligne : Texte = ...
    		ecr.Writeline Texte 'Ecriture de la ligne dans le fichier destination
            Else
                   ' Ne rien faire ou faire autre chose
    	End if	
    Wend
    lect.Close
    ecr.Close
    J'espère que cela t'aidera.
    ++

Discussions similaires

  1. Réécriture des fichiers
    Par ensienne dans le forum Shell et commandes GNU
    Réponses: 23
    Dernier message: 02/07/2013, 17h07
  2. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 14h56
  3. Réponses: 3
    Dernier message: 25/07/2002, 11h42
  4. [langage] comment créer des fichiers ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 05/05/2002, 17h33
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 23h37

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