Remplacer une valeur dans plusieurs fichiers
y
-
y -
y -
Bonjour à tous et meilleurs voeux 2013,
n'étant pas développeur je collecte des sources vbs un peu partout depuis le web pour tenter de faire un vb.. en vain.
je cherche à remplacer le mot RETURN de plusieurs fichier *.hprim par un vrai retour chariot depuis un même repertoire c:\temp
voici ce que j'ai deja trouvé ici et la sur internet mais cela ne fonctionne vraiment pas :)
merci de votre aide !
Bien à vous
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRep = objFSO.GetFolder("C:\temp\toto")
For Each file In objRep
Set objFile = objFSO.OpenTextFile(file)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "RETURN", "|" & vbcrlf & "")
Set objFile = objFSO.OpenTextFile("C:\temp\toto", ForWriting)
objFile.WriteLine strNewText
objFile.Close
Next
Set objFile = Nothing
End if
Next
n'étant pas développeur je collecte des sources vbs un peu partout depuis le web pour tenter de faire un vb.. en vain.
je cherche à remplacer le mot RETURN de plusieurs fichier *.hprim par un vrai retour chariot depuis un même repertoire c:\temp
voici ce que j'ai deja trouvé ici et la sur internet mais cela ne fonctionne vraiment pas :)
merci de votre aide !
Bien à vous
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objRep = objFSO.GetFolder("C:\temp\toto")
For Each file In objRep
Set objFile = objFSO.OpenTextFile(file)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "RETURN", "|" & vbcrlf & "")
Set objFile = objFSO.OpenTextFile("C:\temp\toto", ForWriting)
objFile.WriteLine strNewText
objFile.Close
Next
Set objFile = Nothing
End if
Next
A voir également:
- Remplacer une valeur dans plusieurs fichiers
- Renommer plusieurs fichiers en même temps - Guide
- Remplacer disque dur par ssd - Guide
- Remplacer dans word - Guide
- Fichiers epub - Guide
- Remplacer coco - Accueil - Réseaux sociaux
5 réponses
Bonsoir y,
Dans beaucoup de langage (pas tous!), le principe est le suivant:
- Lire les données en les mémorisant soit dans une variable, soit dans un tableau de variables.
- Effectuer les manipulations ad-hoc
- Écrire les données données dans le fichier
Voilà pour le principe.
Perso, je travaille beaucoup en Visual Basic, et de plus en plus avec VB.Net.
Dans beaucoup de langage (pas tous!), le principe est le suivant:
- Lire les données en les mémorisant soit dans une variable, soit dans un tableau de variables.
- Effectuer les manipulations ad-hoc
- Écrire les données données dans le fichier
Voilà pour le principe.
Perso, je travaille beaucoup en Visual Basic, et de plus en plus avec VB.Net.
merci pour cette réponse de principe mais n'ayant pas les bases peux tu m'aider à l'élaboration ?
le script ci dessous fonctionne très bien pour un fichier toto mais je n'arrive pas à intégrer un boucle pour plusieurs fichiers *.toto ?
Merci
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFile = objFSO.OpenTextFile("C:\temp\a.toto", ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "RETURN", "|" & vbcrlf & "")
Set objFile = objFSO.OpenTextFile("C:\temp\a.toto", ForWriting)
objFile.WriteLine strNewText
objFile.Close
le script ci dessous fonctionne très bien pour un fichier toto mais je n'arrive pas à intégrer un boucle pour plusieurs fichiers *.toto ?
Merci
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFile = objFSO.OpenTextFile("C:\temp\a.toto", ForReading)
strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "RETURN", "|" & vbcrlf & "")
Set objFile = objFSO.OpenTextFile("C:\temp\a.toto", ForWriting)
objFile.WriteLine strNewText
objFile.Close
Bonjour y,
J'ai dû chercher un peu car mes souvenirs quelquefois me font défaut.
Cela devrait t'aider .. excepter la conversion car la chaîne de caractère RETURN n'existe pas en VB .. à moins que cette chaîne de caractère soit en dur dans le texte.
Voilà
J'ai dû chercher un peu car mes souvenirs quelquefois me font défaut.
' Bouton, commande l'exécution de la procédure Private Sub cmd_Go_Click() Dim tNomFichier(3) As String ' tNomFichier(0) = "C:\temp\a.toto1.txt" tNomFichier(1) = "C:\temp\a.toto2.txt" tNomFichier(2) = "C:\temp\a.toto3.txt" tNomFichier(3) = "C:\temp\a.toto4.txt" For i=0 To Ubound(tNomFichier) RemplacerValeurDansFichier(tNomFichier(i)) Next i End Sub ' Procédure de lecture, conversion et réécriture de fichier RemplacerValeurDansFichier(ByVal NomFichier As String) Dim Ligne As String, Lignes As String Dim NoFichier As Integer '________________________________________ '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ' lecture du fichier NoFichier = FreeFile Open Chemin & NomFichier For Input As #NoFichier Lignes = "" While Not (EOF(NoFichier)) Line Input #NoFichier, Ligne Lignes = Lignes + Ligne Wend Close #NoFichier 'tbx_Resultat est un TextBox qui affiche les étapes exécutées tbx_Resultat.Text = "Fichier " & NomFichier & " lu." & VbCrLf '________________________________________ '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ' conversion de la chaîne Lignes = Replace(Lignes, "RETURN", "|" & vbcrlf & "") tbx_Resultat.Text = "Fichier " & NomFichier & " conversion terminée." & VbCrLf '________________________________________ '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ' écriture du fichier NoFichier = FreeFile Open Chemin & NomFichier For Output As #NoFichier Print #NoFichier, Lignes2 Close #NoFichier tbx_Resultat.Text = "Fichier " & NomFichier & " écriture terminée." & VbCrLf & VbCrLf '________________________________________ '¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ End Sub
Cela devrait t'aider .. excepter la conversion car la chaîne de caractère RETURN n'existe pas en VB .. à moins que cette chaîne de caractère soit en dur dans le texte.
Voilà
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello
Si tu donnes un peu plus de précisions sur ce que tu veux faire, je peux t'écrire un code en Python.
"je cherche à remplacer le mot RETURN de plusieurs fichiers *.hprim par un vrai retour chariot depuis un même repertoire c:\temp"
Le mot RETURN est-il inscrit en toutes lettres dans chaque fichier ?
Qu'est ce que tu entends par "vrai retour chariot" ? Le caractère \n ?
Et qu'entends tu par "depuis" un répertoire ? Tu veux dire que les fichiers sont DANS le répertoire c:\temp ?
En Python, y en a pas pour 1/2 heure à faire un tel code.
Si tu donnes un peu plus de précisions sur ce que tu veux faire, je peux t'écrire un code en Python.
"je cherche à remplacer le mot RETURN de plusieurs fichiers *.hprim par un vrai retour chariot depuis un même repertoire c:\temp"
Le mot RETURN est-il inscrit en toutes lettres dans chaque fichier ?
Qu'est ce que tu entends par "vrai retour chariot" ? Le caractère \n ?
Et qu'entends tu par "depuis" un répertoire ? Tu veux dire que les fichiers sont DANS le répertoire c:\temp ?
En Python, y en a pas pour 1/2 heure à faire un tel code.
Bonjourn, oui c'est bien cela le mot RETURN est volontairement écrit en toutes lettres dans chaque fichier dont extension est .hprim. cette chaîne de caractère est à remplacer par un retour chariot \n 0D en hexadécimal. les fichiers sont stockés dans le répertoire c:\temp.
Merci pour ton message et ton aide.
Merci pour ton message et ton aide.
Je viens de voir ta réponse. Je vais faire ça en 1/4 h.
Pendant ce temps, va sur la page suivante
https://www.python.org/downloads/release/python-330/
pour installer Python 3.3 sur ton ordinateur
Je suis sur Windows et j'ai installé Windows x86 MSI Installer (3.3.0) (sig) , ça prend 10 minutes max.
Si tu es sur un autre système d'exploitation, je ne sais pas s'il y a des complications supplémentaires.
Pendant ce temps, va sur la page suivante
https://www.python.org/downloads/release/python-330/
pour installer Python 3.3 sur ton ordinateur
Je suis sur Windows et j'ai installé Windows x86 MSI Installer (3.3.0) (sig) , ça prend 10 minutes max.
Si tu es sur un autre système d'exploitation, je ne sais pas s'il y a des complications supplémentaires.
from os import listdir path = 'c:\\temp' path = path.rstrip('\\') + '\\' ##################################################### with open(path +'radada.hprim','w') as f: f.write('''dlkjgqdhkljb vgsdf dlfkqhgdjrkhgqsedjlrkgerg jlkqfg khgfujkqzef jkqhbsdjfqhbsr jkzhgefujqzhgefj bbbbbbbbbbbbbbbRETURNaaaaaaaaaaaaaaaaaaaaaaa lkdqbvgefhbfghbqj qfjlrhbjfbqhfbgh ggggggggggggggggggRETURNhhhhhhhhhhhhhhhh jjcbvbnbn dlfkqhelfkbjkebgqjkbfjfjhbqdf''') with open(path+'tumulu.hprim','w') as f: f.write('''Il songe. Il s'est assis rêveur sous un érable. Entend-il murmurer la forêt vénérable ? Regarde-t-il les fleurs ? regarde-t-il les cieux ? Il songe.RETURNLa nature au front mystérieux Fait tout ce qu'elle peut pour apaiser les hommes ; Du coteau plein de vigne au verger plein de pommes Les mouches viennent, vont, reviennent ;RETURN RETURNles oiseaux Jettent leur petite ombre errante sur les eaux ; Le moulin prend la source et l'arrête au passage ; L'étang est un miroir où le frais paysage''') input('Vérifiez la présence du mot RETURN dans les fichiers créés,\n' 'puis appuyez sur une touche quelconque pour continuer.\n ') ################################################################ gen_filenames = (filename for filename in listdir(path) if filename[-6:]=='.hprim') for fn in gen_filenames: print( fn ) with open(path+fn,'r') as f: content = f.read() with open(path+'mod_'+fn,'w') as g: g.write(content.replace('RETURN','\n'))
C'est le plus simple qui soit.
Cependant ce genre de programme n'est utilisable pour faire un tel remplacement que si les fichiers n'ont pas des tailles excessives. En fait, les fichiers peuvent bien être énormes, du genre 40 GB, si la RAM arrive à encaisser le contenu du fichier lu, c'est à dire du contenu de l'objet content qui est créé dans la RAM
Dis moi quelle est la taille attendue des fichiers STP
Il y a d'autres façons de faire: ligne par ligne, ou in-place, ou par morceaux.
Je suis allé au plus direct pour l'instant.
La partie entre les deux lignes
#######################
#######################
est à éliminer pour l'application de ce code en réel.
C'est une partie que je me suis écrite pour procéder à des tests.
J'ai été un peu long parce qu'en fait je suis passé à Python 3 récemment et que je ne suis pas encore bien habitué à quelques différences avec Python 2.
Dans ce code j'ai donné un nom path+'mod_'+fn pour le fichier modifié. Il convient que tu fasses des essais pour éviter des effaçages intempestifs. Car si tu crées un nouveau fichier avec le même nom path+fn le fichier existant jusqu'alors est effacé.
Si tu es preneur de tout, tu devrais passer sur Python, tu t'en verrais moins