Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[vbs] copier fichier texte ligne par ligne, avec ajout de caractère

8 réponses
Avatar
sympatix
Bonjour !

Je souhaiterais copier la première ligne d'un fichier texte (Fichier_1),
dans Fichier_2, mais en rajoutant devant la ligne copiée, un caractère
(en l'occurence, le caractère ' ), et ensuite, refaire cette manip, pour
chaque ligne de Fichier_1, j'usqu'à la fin.
Mon expérience se limite à la lecture et l'écriture dans un fichier
texte, mais, là, je ne sais pas trop comment m'y prendre...avec une
boucle do loop, je suppose, et l'instruction AtEndOfStream, mais comment
assembler tout ça ?

Merci d'avance pour toute aide :-)



Cordialement
Sympatix

Attention, totosympatix@tototele2.fr est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr

8 réponses

Avatar
sympatix
J'ai un petit peu avancé, mais ce n'est pas encore ça...
En fait, je n'arrive pour l'instant qu'à copier le tout dans Fichier_2,
mais sans les retours à la ligne.
Comment modifier ça ?
Merci d'avance !

------Extrait---------
Set oFSO = CreateObject("Scripting.FileSystemObject")
Const Pour_Lire = 1
Const Pour_Ajouter = 8
Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire, True)
Do While Fichier_1.AtEndOfStream <> True
Lecture_Ligne = "'" & Fichier_1.ReadLine & Lecture_Ligne
Loop
Fichier_1.Close
Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter, true)
Fichier_2.Writeline Lecture_Ligne
Fichier_2.Close
----Fin de l'extrait-----

Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"sympatix" a écrit dans le message de
news:eR$
Bonjour !

Je souhaiterais copier la première ligne d'un fichier texte
(Fichier_1),

dans Fichier_2, mais en rajoutant devant la ligne copiée, un caractère
(en l'occurence, le caractère ' ), et ensuite, refaire cette manip,
pour

chaque ligne de Fichier_1, j'usqu'à la fin.
Mon expérience se limite à la lecture et l'écriture dans un fichier
texte, mais, là, je ne sais pas trop comment m'y prendre...avec une
boucle do loop, je suppose, et l'instruction AtEndOfStream, mais
comment

assembler tout ça ?

Merci d'avance pour toute aide :-)



Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr



Avatar
sympatix
j'avance encore un peu plus...
C'est presque bon, sauf que les caractères "'" se mettent tous au début,
alors que je ne voudrais qu'un ' à chaque début de ligne.
Je n'arrive pas à trouver pourquoi tous les ' se mettent au début.

Merci !

-----------Extrait---------------------------
Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire, True)
Do While Fichier_1.AtEndOfStream <> True
Lecture_Ligne = "'" & Lecture_Ligne & VbCrLf & Fichier_1.ReadLine
Loop
Fichier_1.Close
Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter, true)
Fichier_2.Writeline Lecture_Ligne
Fichier_2.Close
-----------Fin de l'extrait----------------

Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"sympatix" a écrit dans le message de
news:
J'ai un petit peu avancé, mais ce n'est pas encore ça...
En fait, je n'arrive pour l'instant qu'à copier le tout dans
Fichier_2,

mais sans les retours à la ligne.
Comment modifier ça ?
Merci d'avance !

------Extrait---------
Set oFSO = CreateObject("Scripting.FileSystemObject")
Const Pour_Lire = 1
Const Pour_Ajouter = 8
Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire, True)
Do While Fichier_1.AtEndOfStream <> True
Lecture_Ligne = "'" & Fichier_1.ReadLine & Lecture_Ligne
Loop
Fichier_1.Close
Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter, true)
Fichier_2.Writeline Lecture_Ligne
Fichier_2.Close
----Fin de l'extrait-----

Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"sympatix" a écrit dans le message de
news:eR$
Bonjour !

Je souhaiterais copier la première ligne d'un fichier texte
(Fichier_1),

dans Fichier_2, mais en rajoutant devant la ligne copiée, un
caractère


(en l'occurence, le caractère ' ), et ensuite, refaire cette manip,
pour

chaque ligne de Fichier_1, j'usqu'à la fin.
Mon expérience se limite à la lecture et l'écriture dans un fichier
texte, mais, là, je ne sais pas trop comment m'y prendre...avec une
boucle do loop, je suppose, et l'instruction AtEndOfStream, mais
comment

assembler tout ça ?

Merci d'avance pour toute aide :-)



Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr






Avatar
scraper
Salut à sympatix qui dans son post

nous a écrit/répondu :

J'ai un petit peu avancé, mais ce n'est pas encore ça...
En fait, je n'arrive pour l'instant qu'à copier le tout dans
Fichier_2, mais sans les retours à la ligne.
Comment modifier ça ?


ceci devrait mieux convenir ?
fich1.txt est le fichier à convertir, et fich2.txt le résultat :-)

----------
Option Explicit

Dim fso, ForReading, fd, fs, Ligne
ForReading=1

Set fso = CreateObject("Scripting.FileSystemObject")
Set fd=fso.CreateTextFile("fich2.txt", True)
Set fs=fso.OpenTextFile("fich1.txt", ForReading, True)

While Not fs.AtEndOfStream
Ligne=fs.ReadLine
fd.Writeline chr(39) & Ligne
Wend

fd.close
fs.close

Set fso=Nothing

----------

--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

Avatar
Jean-Claude BELLAMY
Dans le message news: ,
sympatix s'est ainsi exprimé:

j'avance encore un peu plus...
C'est presque bon, sauf que les caractères "'" se mettent tous au
début, alors que je ne voudrais qu'un ' à chaque début de ligne.
Je n'arrive pas à trouver pourquoi tous les ' se mettent au début.

Merci !

-----------Extrait---------------------------
Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire, True)
Do While Fichier_1.AtEndOfStream <> True
Lecture_Ligne = "'" & Lecture_Ligne & VbCrLf & Fichier_1.ReadLine
Loop
Fichier_1.Close
Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter, true)
Fichier_2.Writeline Lecture_Ligne
Fichier_2.Close
-----------Fin de l'extrait----------------



Mon p'tit gars, quand un programme foire et qu'on ne comprend pas pourquoi,
il faut être AGRICOLE !
C'est à dire PRAGMATIQUE, SIMPLE, ROBUSTE et EFFICACE!

En effectuant des "traces" , avec un bon vieux "script.echo ...."
(lancer le script dans une fenêtre de commandes, avec Cscript)

Donc juste après la ligne "Lecture_Ligne = ...", ajoute une ligne du style :
wscript.echo Lecture_Ligne

(Ou encore simuler le script à la mimine)

Et là, tu VAS comprendre !
Bien sûr que c'est normal que les "'" se trouvent tous au début !
Vu l'endroit où tu les places dans l'instruction !

Admettons que le fichier contienne ceci :
toto
truc
machin

1ère ligne :
Lecture_Ligne = "'" & Lecture_Ligne & VbCrLf & Fichier_1.ReadLine
Lecture_Ligne = '<VbCrLf>toto

2ème ligne :
Lecture_Ligne = ''<VbCrLf>toto<VbCrLf>truc

3ème ligne :
Lecture_Ligne = '''<VbCrLf>toto<VbCrLf>truc<VbCrLf>machin

le "'" ne doit pas être mis au début du membre de droite de l'instruction,
mais juste devant le contenu de la NOUVELLE ligne , c'est à dire
"Fichier_1.ReadLine" !

Il faut donc écrire :
Lecture_Ligne = Lecture_Ligne & VbCrLf & "'" & Fichier_1.ReadLine

On aura alors :
Lecture_Ligne = <VbCrLf>'toto<VbCrLf>'truc<VbCrLf>'machin


Mais franchement, tu as l'esprit shadok ! ;-)
("Pourquoi faire simple quand on peut faire compliqué?")


Pourquoi ne pas faire une boucle où on lit et écrit chaque ligne
successivement, au lieu de stocker un buffer qui peut devenir énorme?

Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire, True)
Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter, true)
Do While Fichier_1.AtEndOfStream <> True
Fichier_2.Writeline "'" & Fichier_1.ReadLine
loop
Fichier_1.Close
Fichier_2.Close

C'est quand même plus simple et plus lisible, n'est-ce pas?



--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.bellamyjc.org
http://www.bellamyjc.org" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.bellamyjc.org *


Avatar
sympatix
Bonjour !

Mon p'tit gars, quand un programme foire et qu'on ne comprend pas
pourquoi,

il faut être AGRICOLE !
C'est à dire PRAGMATIQUE, SIMPLE, ROBUSTE et EFFICACE!

En effectuant des "traces" , avec un bon vieux "script.echo ...."
(lancer le script dans une fenêtre de commandes, avec Cscript)

Donc juste après la ligne "Lecture_Ligne = ...", ajoute une ligne du
style :

wscript.echo Lecture_Ligne

(Ou encore simuler le script à la mimine)

Et là, tu VAS comprendre !
Bien sûr que c'est normal que les "'" se trouvent tous au début !
Vu l'endroit où tu les places dans l'instruction !

Admettons que le fichier contienne ceci :
toto
truc
machin

1ère ligne :
Lecture_Ligne = "'" & Lecture_Ligne & VbCrLf & Fichier_1.ReadLine
Lecture_Ligne = '<VbCrLf>toto

2ème ligne :
Lecture_Ligne = ''<VbCrLf>toto<VbCrLf>truc

3ème ligne :
Lecture_Ligne = '''<VbCrLf>toto<VbCrLf>truc<VbCrLf>machin

le "'" ne doit pas être mis au début du membre de droite de
l'instruction,

mais juste devant le contenu de la NOUVELLE ligne , c'est à dire
"Fichier_1.ReadLine" !

Il faut donc écrire :
Lecture_Ligne = Lecture_Ligne & VbCrLf & "'" & Fichier_1.ReadLine

On aura alors :
Lecture_Ligne = <VbCrLf>'toto<VbCrLf>'truc<VbCrLf>'machin


Ah oui, tout est clair maintenant...ça ajoutait en fait, à la fait du
fichier, le " ' " et puis et puis le contenu réactualisé de la
variable.
Ce qui m'induisait en erreur, c'est que sachant qu'ayant mis la
constante "8" (donc, ouverture d'un fichier, avec ajout à la fin), je ne
comprenais pas pourquoi ça ajoutait obstinément le " ' " au début !

Mais franchement, tu as l'esprit shadok ! ;-)
("Pourquoi faire simple quand on peut faire compliqué?")
Ah, ben oui, c'est tout moi, ça ;-)


Pourquoi ne pas faire une boucle où on lit et écrit chaque ligne
successivement, au lieu de stocker un buffer qui peut devenir énorme?

Set Fichier_1 = oFSO.openTextFile (Fichier_source, Pour_Lire,
True)

Set Fichier_2 = oFSO.openTextFile (Fichier_Cible, Pour_Ajouter,
true)

Do While Fichier_1.AtEndOfStream <> True
Fichier_2.Writeline "'" & Fichier_1.ReadLine
loop
Fichier_1.Close
Fichier_2.Close

C'est quand même plus simple et plus lisible, n'est-ce pas?


Effectivement, c'est beaucoup plus simple et plus "pro" !
Mais j'étais effectivement parti sur cette méthode, au début, et une
erreur qui n'avait rien à voir avec l'ouverture-fermeture des fichiers
texte, m'a fait croire qu'il était impossible d'avoir un fichier texte
ouvert en lecture, et un autre en écriture, en même temps, d'où, ma
Shadokerie ;-)

Merci pour tout :-)

Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"Jean-Claude BELLAMY" a écrit dans le
message de news:
Dans le message news: ,
sympatix s'est ainsi exprimé:
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.bellamyjc.org
http://www.bellamyjc.org" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.bellamyjc.org *





Avatar
sympatix
(Re) Salut !

Merci ça marche aussi !
Mais si je comprends bien, avec ça:

Set fd=fso.CreateTextFile("fich2.txt", True)

=>Tu crée un fichier texte qui s'ouvre par défaut en écriture ?
(je veux dire, que tu n'as pas besoin de le réouvrire avec OpenTexteFile
("Mon_Fichier", ForWriting, True) ?)


Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"scraper" a écrit dans le message de
news:
Salut à sympatix qui dans son post

nous a écrit/répondu :

J'ai un petit peu avancé, mais ce n'est pas encore ça...
En fait, je n'arrive pour l'instant qu'à copier le tout dans
Fichier_2, mais sans les retours à la ligne.
Comment modifier ça ?


ceci devrait mieux convenir ?
fich1.txt est le fichier à convertir, et fich2.txt le résultat :-)

----------
Option Explicit

Dim fso, ForReading, fd, fs, Ligne
ForReading=1

Set fso = CreateObject("Scripting.FileSystemObject")
Set fd=fso.CreateTextFile("fich2.txt", True)
Set fs=fso.OpenTextFile("fich1.txt", ForReading, True)

While Not fs.AtEndOfStream
Ligne=fs.ReadLine
fd.Writeline chr(39) & Ligne
Wend

fd.close
fs.close

Set fso=Nothing

----------

--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper





Avatar
scraper
Salut à sympatix qui dans son post

nous a écrit/répondu :

(Re) Salut !

Merci ça marche aussi !
Mais si je comprends bien, avec ça:

Set fd=fso.CreateTextFile("fich2.txt", True)

=>Tu crée un fichier texte qui s'ouvre par défaut en écriture ?


oui .. n'était ce pas ce que tu voulais faire ?

(cf :"Je souhaiterais copier la première ligne d'un fichier texte
(Fichier_1),
dans Fichier_2,") :-)

(je veux dire, que tu n'as pas besoin de le réouvrire avec
OpenTexteFile ("Mon_Fichier", ForWriting, True) ?)


non, la preuve .. as tu essayé le code ? ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

Avatar
sympatix
oui .. n'était ce pas ce que tu voulais faire ?
si, si...le problème n'est pas là, j'ai essayé, ça fonctionne très bien

:-)

(je veux dire, que tu n'as pas besoin de le réouvrire avec
OpenTexteFile ("Mon_Fichier", ForWriting, True) ?)
non, la preuve ..

ça répond mieux à ma question, je préfère qu'on me le dise 2x, plutôt

que de comprendre de travers, je suis agréablement surpris, c'est tout !

[Private Joke]

Non, tu ne sens pas le pâté, ni le gaz ! rofl

[/Private Joke]

Merci encore, à +;-)

Cordialement
Sympatix

Attention, est mon adresse antispam non
valide.
Pour me répondre, tous-les-toto-sont-en-trop, merci

...Une 2ème chance, pour ceux qui n'ont pas compris;-)
saint_path_x_arobaz_t'es_laide_euh_point_fr
"scraper" a écrit dans le message de
news:
Salut à sympatix qui dans son post

nous a écrit/répondu :

(Re) Salut !

Merci ça marche aussi !
Mais si je comprends bien, avec ça:

Set fd=fso.CreateTextFile("fich2.txt", True)

=>Tu crée un fichier texte qui s'ouvre par défaut en écriture ?


oui .. n'était ce pas ce que tu voulais faire ?

(cf :"Je souhaiterais copier la première ligne d'un fichier texte
(Fichier_1),
dans Fichier_2,") :-)

(je veux dire, que tu n'as pas besoin de le réouvrire avec
OpenTexteFile ("Mon_Fichier", ForWriting, True) ?)


non, la preuve .. as tu essayé le code ? ;-)



--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper