Aide FileSystemObject

aurelien2723 Messages postés 181 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 26 janvier 2011 - 25 sept. 2006 à 15:12
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 26 sept. 2006 à 12:34
Salut!
J'ai besoin de modifier des données dans un texte Unicode. J'utilises donc cette méthode :

Dim fso, f
fso = CreateObject("Scripting.FileSystemObject")
f = fso.OpenTextFile("C:\source.txt")

Cependant, quel fon,ction je peux utiliser sur l'objet f ?? J'ai rien trouver dans la donc à part
f.write
f.read  ....

J4aimerais utilisert une fonction Replace, est-ce possible svp?

Merci

@+
Aurélien

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 sept. 2006 à 17:42
Salut
Tout se qu'il faut savoir est sur MSDN :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/af4423b2-4ee8-41d6-a704-49926cd4d2e8.asp
ou, en français
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcn7/html/vbconintroductiontofilesystemobjectmodel.asp

et bien sûr, parmi les inombrables sources du site qui parlenbt de FileSystemObject ou FSO.

Une fois que tu as lu ta ligne et qu'elle est stockée dans une chaine (String), rien ne t'empèche de la travailler et de faire un Replace, du moment que tu la réécris ensuite.
Mais tu ne pourras pas réécrire seulement une ligne dans un fichier (pas d'accès séquentiel), il te faudra surement lire tout le fichier, modifier tes lignes puis tout réécrire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
aurelien2723 Messages postés 181 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 26 janvier 2011 1
26 sept. 2006 à 08:01
Merci

il est possible de stocker le fichier dans un seul string?
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
26 sept. 2006 à 12:34
 Bonjour,

Exemple avec fso de "Replace" dans un .txt
Script, en vbs, que j'ai proposé en réponse à un topic.
Surement simple à translaté et à modifié en vb6.

jean-marc

Option Explicit
Dim Saisie1, Saisie2, Saisie3
Saisie1 = InputBox(vbCrLf&vbCrLf&vbCrLf&vbCrLf&"Quelle chaine de caractères" &_
          " voulez-vous remplacer ???","Modification de script", "ligne")
If Saisie1 = "" Then WScript.Quit


Saisie2 = InputBox(vbCrLf&vbCrLf&vbCrLf&vbCrLf&"Par quelle chaine de caractères" &_
          " voulez-vous remplacer la chaine " & Saisie1 &_
          " ???","Modification de script", "nouvelle ligne")
If Saisie2 = "" Then WScript.Quit


Saisie3 = InputBox(vbCrLf&vbCrLf&vbCrLf&vbCrLf&"Pour quelle extension de fichier" &_
          " voulez-vous remplacer la chaine " & Saisie1 &_
          " ???","Modification de script", "txt")
If Saisie3 = "" Then WScript.Quit


Const ForReading 1, ForWriting 2, ForAppending = 8
Dim fso, Dossiers, f, fichier, fichiers, i, strtmp, Resultat
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossiers = fso.GetFolder(GetPath)
Set fichiers = Dossiers.Files


'pour chaque fichier de mon objet fichiers de mon objet fso...:)
For Each fichier in fichiers
   If fso.GetExtensionName(fichier) = Saisie3 Then


   Dim objTextStream
   Set objTextStream = Fso.OpenTextFile(GetPath & fichier.Name, ForReading)
   Resultat = objTextStream.ReadAll


   strtmp = split(Resultat,"")
   For i = 0 to Ubound(strtmp)
       If instr(trim(strtmp(i)),Saisie1) Then
           strtmp(i) = Replace(strtmp(i), Saisie1, Saisie2)
       End If
       objTextStream.Close
       Set objTextStream = Fso.OpenTextFile(GetPath & fichier.Name, ForWriting, True)
       objTextStream.Write strtmp(i)
   Next
   objTextStream.Close
   End If
Next


'Fonction de récupération du répertoire courant
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
End Function


Set objTextStream = Nothing
Set f = Nothing
Set fso = Nothing
MsgBox "Modifications effectuées !!!", vbInformation
0
Rejoignez-nous