OVH Cloud OVH Cloud

Lire fichiers - pour modif un mot

1 réponse
Avatar
Débutant
Bonjour,

D=E9j=E0 , je tiens =E0 m'excuser, car je n'y connais vraiment=20
rien en VBS.
J'aimerai lire un fichier texte , rechercher dans ce=20
fichier le mot "EXEMPLE" et le remplacer par "TOTO".
Est-ce possible ?

J'aimerai aussi que ce VBS modifie tous les fichiers se=20
trouvant dans une arboresence.
CAD; un repertoire principal puis en dessous que des=20
repertoires A - B - C avec chaque fois dans ces sous=20
r=E9pertoires le fichier texte en question.

Merci

1 réponse

Avatar
Zoury
Salut à toi Ô Débutant! :O)

En VBS, tu dois utiliser la Scripting Runtime Library (scrrun.dll) qui elle
offre le FileSystemObject (FSO) afin d'effectuer des traitements sur des
fichiers, répertoires ou lecteurs. Voici un exemple de code en VBS qui
reçoit le nom d'un répertoire en paramètre ainsi que le mot à chercher et le
mot par laquelle nous devons le remplacer.

'***
' VBS
Option Explicit

Call ParseFolder("c:New Folder", "****", "hehehe")

Private Sub ParseFolder(sFolderPath, sFind, sReplace)

Dim fld
Dim ts
Dim sFileText
Dim fso
Dim f
Dim fld2

' Initialise le FSO
' CreateObject instancie la classe spécifiée (ProgID)
Set fso = CreateObject("Scripting.FileSystemObject")

' Obtient le répertoire actuel
Set fld = fso.GetFolder(sFolderPath)

' Boucle ses fichiers et effectu le replacement
For Each f In fld.Files
Call ReplaceTextInFile(f.Path, sFind, sReplace)
Next

' Boucle ses sous-répertoires
For Each fld2 In fld.SubFolders
' Rappelle la fonction
Call ParseFolder(fld2.Path, sFind, sReplace)
Next

End Sub

Private Sub ReplaceTextInFile(sFile, sFind, sReplace)

Dim ts
Dim fso
Dim sFileText
Const ForReading = 1 ' utilisé par FSO
Const ForWriting = 2 ' utilisé par FSO

' Initialise le FSO
Set fso = CreateObject("Scripting.FileSystemObject")

' Ouvre le fichier en lecture
Set ts = fso.OpenTextFile(sFile, ForReading, False)

' Lit son contenu
sFileText = ts.ReadAll

' Ferme le fichier
Call ts.Close

' Ouvre le fichier en écriture
Set ts = fso.OpenTextFile(sFile, ForWriting, False)

' Modifie son contenu en remplacant la chaine
Call ts.Write(Replace(sFileText, sFind, sReplace))

' Ferme le fichier modifié
ts.Close

End Sub
'***

Note : La fonction est récursive, elle se rappelle elle même jusqu'à ce
qu'il n'y est plus de sous répertoire à fouiller. Tu peux mettre autant de
fichiers que tu souhaites dans les répertoires et sous répertoires.

L'arborescence suivante par exemple fonctionnerait:

Folder1
|__SubFolder1
|__File1
|__SubFolder1
|__File1
|__File2
|__SubFolder2
|__SubFolder1
|__File1
|__File2
|__File3
|__File1
|__File1
|__File2

Autre note : le FSO ne devrait jamais être employé dans une application VB
standard`

Quels sont les désavantages du FSO (File System Object) ?
http://faq.vb.free.fr/index.php?question6

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Débutant" wrote in message
news:0fbb01c3898b$8fbddcb0$
Bonjour,

Déjà , je tiens à m'excuser, car je n'y connais vraiment
rien en VBS.
J'aimerai lire un fichier texte , rechercher dans ce
fichier le mot "EXEMPLE" et le remplacer par "TOTO".
Est-ce possible ?

J'aimerai aussi que ce VBS modifie tous les fichiers se
trouvant dans une arboresence.
CAD; un repertoire principal puis en dessous que des
repertoires A - B - C avec chaque fois dans ces sous
répertoires le fichier texte en question.

Merci