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 :

Remplacer un mot dans un fichier texte


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    Par défaut Remplacer un mot dans un fichier texte
    je voudrais remplacer le mot "remplace" dans un fichier test.vbs par une autre; via le code ci-dessous!

    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
     
    Const ForReading = 1
    Const ForWriting = 2
     
    strFileName = "test.vbs"
    strOldText = "remplace"
    strNewText = "------"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
     
    strText = objFile.ReadAll
    objFile.Close
    strNewText = Replace(strText, strOldText, strNewText)
     
    Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
    objFile.Write strNewText
    objFile.Close

    ou celui -ci ne donne rien :

    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
     
    ' http://msdn.microsoft.com/en-us/library/314cz14s(v=vs.84).aspx
     
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    ' ForReading 		1 	Open a file for reading only. You can't write to this file.
    ' ForWriting 		2 	Open a file for writing.
    ' ForAppending 	8 	Open a file and write to the end of the file.
     
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    ' TristateUseDefault 	-2 		Opens the file using the system default.
    ' TristateTrue 				-1 		Opens the file as Unicode.
    ' TristateFalse 			0 		Opens the file as ASCII.
     
    'Const ForReading = 1
    'Const ForWriting = 2
     
    Dim fso, AModif, Modif, Fichier1, fichier2
     
    AModif = "remplace"
    Modif = "-----------"
    Fichier1 = "C:\tmp\!\test.vbs"
    Fichier2 = "C:\tmp\!\test1.vbs"
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set F1 = oFSO.OpenTextFile (Fichier1, ForReading)
    Set F2 = oFSO.CreateTextFile (Fichier2, ForWriting)
     
    Do Until F1.AtEndOfStream
    	Lit = F1.ReadLine
    		If Lit = AModif Then
    			F2.WriteLine Modif
    		Else
    			F2.WriteLine Lit
    		End If
    Loop
     
    Set F1 = Nothing
    Set F2 = Nothing
    oFSO.DeleteFile Fichier1
    oFSO.MoveFile Fichier2, Fichier1
    malgrés ces infos :

    http://msdn.microsoft.com/en-us/libr...(v=vs.84).aspx
    http://ss64.com/vb/syntax-replace.html

    je galère depuis des heures!

    merci d'avance de votre aide...

  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,

    Etrange, le 1er code fonctionne trés bien chez moi ...
    Es-tu sûr de ton critère de recherche ?
    N'aurais-tu pas juste un souci de majuscules/minuscules ou d'espaces ...
    Ou encore un souci de droit d'écriture sur le fichier ... ?

    Peux-tu tester ce 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
    Const ForReading = 1
    Const ForWriting = 2
     
    Dim oFSO, rech, Ligne
     
    strFileName = "test.vbs"
    strOldText = "remplace"
    strNewText = "------"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    If objFSO.FileExists(strFileName) = False Then MsgBox "Fichier cible non-trouvé", vbOkOnly : Wscript.Quit
     
    Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
    rech = 0
    While Not objFile.AtEndOfStream
    Ligne = objFile.ReadLine
    If Instr(Ligne, strOldText) <> 0 Then rech = rech + 1
    Wend
    MsgBox strOldText & " trouvé " & rech & " fois dans le fichier"
    objFile.Close
     
    Set objFile = objFSO.OpenTextFile(strFileName, ForReading)
    strText = objFile.ReadAll
    objFile.Close
     
    strNewText = Replace(strText, strOldText, strNewText)
    Set objFile = objFSO.OpenTextFile(strFileName, ForWriting)
    objFile.Write strNewText
    objFile.Close

  3. #3
    Invité
    Invité(e)
    Par défaut
    Effectivement c'était une problème de casse.

    entre temps, j'ai trouvé une autre solution qui m'oblige à mettre en fin de fichier cible (à traiter) la chaine de texte à traiter

    voici pour info le 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
     
    ' Fichier coble à traiter
    Fichier = "C:\tmp\new\test.vbs"
     
    set objFSO = CreateObject("Scripting.FileSystemObject") 
    set objFile = objFSO.getFile(Fichier) 
     
         'Test si le fichier est vide
    	 if objFile.size > 0 then 
             Wscript.Echo "Fichier contient des DATAs : " & objFile
    		 set fs = objFSO.opentextfile(Fichier) 
             strText = fs.readall() 
     
    		 'Chaine de caractère à remplacer, présent dans le fichier cible (Variable = strStartFolder)
    		 ' chr(34) = "
    		 strOld = chr(34) & "Chemin" & chr(34)
    		 Wscript.Echo "strOld : " & strOld
    		 tbl= split(strText,strOld ) 'Elément à soustraire
     
    		 fs.Close
     
    		 'Nouvelle valeur pour la variable strStartFolder du fichier cible Chemin --> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
    		 ' chr(34) = "   --  chr(58) = :  --   chr(92) = \  
    		 strNew = chr(34) & "C" & chr(58) & chr(92) & "ProgramData" & chr(92) & "Microsoft" & chr(92) & "Windows" & chr(92) & "Start Menu" & chr(92) & "Programs" & chr(92) & chr(34)
    		 Wscript.Echo "strNew : " & strNew
     
     
    		 Set objFile = objFSo.OpenTextFile(Fichier, 2) 
    		 objFile.Write tbl(0) & strNew
     
    		 fs.close: set fs = nothing
         else 
             strText = "File was empty" 
    		 Wscript.Echo "Fichier vide : " & objFile
         end if 
         set objFile = nothing 
         set objFSO = nothing
    dans l'autre fichier, ce qui suis doit être en fin de fichier (ou code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ' ============================================================================================= '
    '          Cette variale doit rester en fin de fichier, pour le traitement du fichier 1.vbs
    ' ============================================================================================= '
    'strStartFolder = "C:\ProgramData\Microsoft\Windows\Start Menu\Programs"
    strStartFolder = "------"
    merci pour ton aide!

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

Discussions similaires

  1. Remplacement de caractères ou de mots dans un fichier texte
    Par Jerome Briot dans le forum Téléchargez
    Réponses: 4
    Dernier message: 21/09/2016, 13h03
  2. [Batch] Remplacer un Mot dans un fichier texte
    Par PythonNovices dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 01/07/2015, 12h07
  3. Remplacer mot dans un fichier text !
    Par Marie.B dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 25/01/2009, 13h38
  4. Réponses: 10
    Dernier message: 29/04/2006, 10h40
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

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