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 :

Lister fichiers sur lecteur et remplacer une chaîne de caractères


Sujet :

VBScript

  1. #1
    Membre du Club
    Profil pro
    Responsable administratif
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable administratif

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Points : 51
    Points
    51
    Par défaut Lister fichiers sur lecteur et remplacer une chaîne de caractères
    Bonjour,

    Je cherche à modifier des fichiers dans mon lecteur C: en remplacant une chaîne de caractères :

    Je sais le faire avec un script vbs sur un répertoire précis en mettant le script dans le répertoire. J'ai trouvé un script qui permet de balayer le lecteur C: et trouve tous les fichiers recherchés. Je voudrais maintenant combiner les 2. Mais je bute sur le 'préfixe' à mette devant OpenTextFile.

    Voici le texte que j'ai monté, sur base de butinage internet. Je suis loin de maîtriser la programmation vbs, j'ai fait du C, du VBA, et je comprends ce que je lis mais je ne sais absolument pas voir ce qui ne fonctionne pas. Voici mon script :

    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
    Dim vDossier
    Dim vNom
    Dim vFile
    Dim fso
    Dim vNomEtChemin
     
    Set Shell = CreateObject("wscript.Shell")
    Set env = Shell.environment("Process")
     
    strComputer = env.Item("Computername")
    wscript.echo strComputer
     
    set objWMIService = GetObject("winmgmts:\\" & strComputer)
    set colFiles = objWMIService.ExecQuery ("Select * from CIM_DataFile Where Extension = 'xsc' and Drive = 'c:'")
    '*** Boucle For pour lister tous les fichiers qui ont l'extension "xsc"
    For Each objFile in colFiles
    <div style="margin-left:40px">Wscript.Echo "Dossier => " & objFile.Drive & objFile.Path
        vDossier = objFile.Drive & objFile.Path
        Wscript.Echo "Nom     => " & objFile.FileName & "." & objFile.Extension
        vNom = objFile.FileName & "." & objFile.Extension
        Wscript.Echo "Taille  => " & objFile.FileSize & " Octets"
        Wscript.Echo "vDossier : " & vDossier
        Wscript.Echo "vNom : " & vNom
        vNomEtChemin= vDossier & vNom
        Wscript.Echo vNomEtChemin
        Wscript.Echo "--------------------------------------------"
    '*** Ecriture dans chaque fichier ***
    Set fso = CreateObject("Scripting.FileSystemObject")	
        Set vFile = fso.OpenTextFile(vNomEtChemin, ForReading)
    		while Not vFile.AtEndOfStream 
    		playlist = vFile.ReadAll
    		wend
    		playlist = Replace (playlist, "Win,", "xxxx") '& vNomEtChemin)
    		Set vFile = fsp.OpenTextFile(vNomEtChemin, ForWriting)
    		vFile.write playlist</div>'*** Destruction des objets
    Set Shell = Nothing
    Set env = Nothing
     
    WScript.Quit

    Merci à ceux qui me lisent,

    Olivier

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    Salut;

    Au lieu de passer par CIM_DataFile, on peut faire le travail par un traitement récursif tel que ce
    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
    Option Explicit
    Const ForWriting = 2, ForReading = 1
    Dim fso,  objOut, objTemp, ContentFile, FinalText
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' Fichier listant tous ceux qui répondent au critère : extension = xsc
    Set objOut = fso.OpenTextFile(".\Filelog.txt", ForWriting, True)
    ' Appel de la fonction de recherche :
    Scan4Files "C:\" 
    ' Avertit lorsque la recherche est terminée :
    MsgBox "Recherche terminée", vbSystemModal
    '===========================
    Sub Scan4Files(sFolder) 
        'Fonction de recherche et remplacement :
        Dim oSubFolder, oFolder, F , ffCount
        Set oFolder = fso.GetFolder(sFolder)
       ' On Error Resume Next    
            If Err.Number <> 0 Then
                Err.Clear
            Else
                If oFolder.Files.Count > 0 Then
                   For Each F In fso.GetFolder(oFolder.Path).Files
                     If Err.Number <> 0 Then 
                        Err.Clear
                     Else     
                        If Is_XSC_File(F.Path) Then 
                           objOut.WriteLine F.Path 
                           Set objTemp = fso.OpenTextFile(F.Path, ForReading, False)
                           ContentFile = objTemp.ReadAll
                           objTemp.Close
                           ContentFile = Replace(ContentFile, "Win,", "xxxx", 1, -1, vbTextCompare)
                           ' Si la balise <div> doit contenir tout le texte après remlacement :
                           FinalText = "<div style=" & Chr(34) & "margin-left:40px" & Chr(34) & ">" _
                           & ContentFile & "</div>"
                           Set objTemp = fso.OpenTextFile(F.Path, ForWriting, True)
                           objTemp.Write FinalText
                           objTemp.Close
                        End If
                     End If  
                   Next
                End If
            End If
            'Parcours de tous les sous-dossiers du lecteur
            'ou dossier s'il est ajouté en tant que paramètre pour Scan4Files
            For Each oSubFolder In oFolder.SubFolders
                If Err.Number <> 0 Then
                  Err.Clear
                Else
                  Scan4Files oSubFolder.Path 
                End If
            Next
    End Sub
    '============================
    Function Is_XSC_File(strObj)
       Is_XSC_File = LCase(fso.GetExtensionName(strObj)) = "xsc"
    End Function
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/09/2020, 13h41
  2. Réponses: 0
    Dernier message: 02/09/2014, 12h20
  3. Remplacer une chaîne de caractères dans un fichier
    Par pol2095 dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 26/03/2014, 07h35
  4. Réponses: 0
    Dernier message: 19/05/2009, 16h02
  5. Remplacer une chaîne de caractère dans un gros fichier
    Par dosilbr dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/03/2007, 13h38

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