Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne
revient pas tout seul ...
Un petit coup de pouce.
Un fichier txt ou je doit écraser en position 50 un espace blanc.
Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne
re-travaillée (détecté par un 4 en position 1 longueur 1) est
systématiquement doublée dans le fichier de sortie.
Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:\FIN\FIN-E", 1,False)
Set outFile= fso.OpenTextFile("C:\FIN\AEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True
test1 = inFile.ReadLine 'Lecture de la ligne complète
test2 = Mid(test1,1,1) ' extraction du premier caractère
if test2="4" then' si =4 mettre un blanc en position 50
test3=Mid(test1,1,49)&" "&Mid(test1,51,200)
outFile.writeline test3
End If
outFile.write test1 & vbcrlf
Loop
Set fso = Nothing
Set inFile = Nothing
Set outFile = Nothing
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
---DGI972---
Bonjour à tous
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient pas tout seul ...
Un petit coup de pouce. Un fichier txt ou je doit écraser en position 50 un espace blanc. Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne re-travaillée (détecté par un 4 en position 1 longueur 1) est systématiquement doublée dans le fichier de sortie. Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère if test2="4" then' si =4 mettre un blanc en position 50 test3=Mid(test1,1,49)&" "&Mid(test1,51,200) outFile.writeline test3 End If outFile.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1 Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
Bonjour à tous
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient pas
tout seul ...
Un petit coup de pouce.
Un fichier txt ou je doit écraser en position 50 un espace blanc.
Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne
re-travaillée (détecté par un 4 en position 1 longueur 1) est
systématiquement doublée dans le fichier de sortie.
Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False)
Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True
test1 = inFile.ReadLine 'Lecture de la ligne complète
test2 = Mid(test1,1,1) ' extraction du premier caractère
if test2="4" then' si =4 mettre un blanc en position 50
test3=Mid(test1,1,49)&" "&Mid(test1,51,200)
outFile.writeline test3
End If
outFile.write test1 & vbcrlf
Loop
Set fso = Nothing
Set inFile = Nothing
Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1
Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire)
Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream
Lit = F1.ReadLine
If Mid(Lit,1,1) = "4" Then
F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200))
Else
F2.WriteLine Lit
End If
Loop
Set F1 = Nothing
Set F2 = Nothing
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient pas tout seul ...
Un petit coup de pouce. Un fichier txt ou je doit écraser en position 50 un espace blanc. Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne re-travaillée (détecté par un 4 en position 1 longueur 1) est systématiquement doublée dans le fichier de sortie. Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère if test2="4" then' si =4 mettre un blanc en position 50 test3=Mid(test1,1,49)&" "&Mid(test1,51,200) outFile.writeline test3 End If outFile.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1 Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
---DGI972---
Bonjour à tous
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient pas tout seul ...
Un petit coup de pouce. Un fichier txt ou je doit écraser en position 50 un espace blanc. Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne re-travaillée (détecté par un 4 en position 1 longueur 1) est systématiquement doublée dans le fichier de sortie. Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère if test2="4" then' si =4 mettre un blanc en position 50 test3=Mid(test1,1,49)&" "&Mid(test1,51,200) outFile.writeline test3 End If outFile.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1 Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
Je me suis trompé. Cela fait exactement le même Pb. Je ne comprends pas la logique de la boucle !!! ca m'énerve
Bonjour à tous
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient
pas tout seul ...
Un petit coup de pouce.
Un fichier txt ou je doit écraser en position 50 un espace blanc.
Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne
re-travaillée (détecté par un 4 en position 1 longueur 1) est
systématiquement doublée dans le fichier de sortie.
Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False)
Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True
test1 = inFile.ReadLine 'Lecture de la ligne complète
test2 = Mid(test1,1,1) ' extraction du premier caractère
if test2="4" then' si =4 mettre un blanc en position 50
test3=Mid(test1,1,49)&" "&Mid(test1,51,200)
outFile.writeline test3
End If
outFile.write test1 & vbcrlf
Loop
Set fso = Nothing
Set inFile = Nothing
Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1
Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire)
Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream
Lit = F1.ReadLine
If Mid(Lit,1,1) = "4" Then
F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200))
Else
F2.WriteLine Lit
End If
Loop
Set F1 = Nothing
Set F2 = Nothing
Je me suis trompé.
Cela fait exactement le même Pb.
Je ne comprends pas la logique de la boucle !!!
ca m'énerve
Je peux dire que le VBSCript: ce n'est pas comme le vélo cela ne revient pas tout seul ...
Un petit coup de pouce. Un fichier txt ou je doit écraser en position 50 un espace blanc. Le VBScript ci dessous réalise presque ce que je veux sauf que la ligne re-travaillée (détecté par un 4 en position 1 longueur 1) est systématiquement doublée dans le fichier de sortie. Je ne comprends pas pourquoi ma boucle est pourtant basique.
Mon VBSCript:
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outFile= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère if test2="4" then' si =4 mettre un blanc en position 50 test3=Mid(test1,1,49)&" "&Mid(test1,51,200) outFile.writeline test3 End If outFile.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outFile = Nothing
D'avance merci
Je me réponds a moi même.
Const Pour_lire = 1 Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
Je me suis trompé. Cela fait exactement le même Pb. Je ne comprends pas la logique de la boucle !!! ca m'énerve
---DGI972---
Const Pour_lire = 1 Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
C'est bon cette fois ci
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outfil= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère 6 ou 4 if test2="4" then' si =4 c'est une remise test1=Mid(test1,1,49)&" "&Mid(test1,51,200) End If outfil.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outfil = Nothing
Const Pour_lire = 1
Const Pour_ecrire = 2
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire)
Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream
Lit = F1.ReadLine
If Mid(Lit,1,1) = "4" Then
F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200))
Else
F2.WriteLine Lit
End If
Loop
Set F1 = Nothing
Set F2 = Nothing
C'est bon cette fois ci
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False)
Set outfil= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True
test1 = inFile.ReadLine 'Lecture de la ligne complète
test2 = Mid(test1,1,1) ' extraction du premier caractère 6 ou 4
if test2="4" then' si =4 c'est une remise
test1=Mid(test1,1,49)&" "&Mid(test1,51,200)
End If
outfil.write test1 & vbcrlf
Loop
Set fso = Nothing
Set inFile = Nothing
Set outfil = Nothing
Set oFSO = CreateObject("Scripting.FileSystemObject") Set F1 = oFSO.OpenTextFile ("C:FINFIN-E", Pour_lire) Set F2 = oFSO.CreateTextFile ("C:FINAEICFIN", Pour_ecrire, False)
Do Until F1.AtEndOfStream Lit = F1.ReadLine If Mid(Lit,1,1) = "4" Then F2.WriteLine (Mid(lit,1,49)&" "&Mid(lit,51,200)) Else F2.WriteLine Lit End If Loop Set F1 = Nothing Set F2 = Nothing
C'est bon cette fois ci
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:FINFIN-E", 1,False) Set outfil= fso.OpenTextFile("C:FINAEICFIN", 2,True)
Do While inFile.AtEndOfStream <> True test1 = inFile.ReadLine 'Lecture de la ligne complète test2 = Mid(test1,1,1) ' extraction du premier caractère 6 ou 4 if test2="4" then' si =4 c'est une remise test1=Mid(test1,1,49)&" "&Mid(test1,51,200) End If outfil.write test1 & vbcrlf Loop
Set fso = Nothing Set inFile = Nothing Set outfil = Nothing
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonjour,
| Lire un fichier au format texte contenant des lignes puis | substituer le 50ème caractère de chaque ligne par un espace | si la ligne commence par un 4 ou un 6
Tentative de résolution via une expression régulière ;-)
Set oRe=New RegExp: oRe.Multiline=True oRe.Global=True: oRe.Pattern="(^[46].{48}).(.*)" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("C:FINFIN-E") Set oFileOut=oFs.CreateTextFile("C:FINAEICFIN", True) oFileOut.Write oRe.Replace(oFileIn.ReadAll(),"$1 $2")
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.f3d27d85a1c43d6b.33554@NOSPAMlaposte.net
Bonjour,
| Lire un fichier au format texte contenant des lignes puis
| substituer le 50ème caractère de chaque ligne par un espace
| si la ligne commence par un 4 ou un 6
Tentative de résolution via une expression régulière ;-)
Set oRe=New RegExp: oRe.Multiline=True
oRe.Global=True: oRe.Pattern="(^[46].{48}).(.*)"
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFileIn=oFs.OpenTextFile("C:FINFIN-E")
Set oFileOut=oFs.CreateTextFile("C:FINAEICFIN", True)
oFileOut.Write oRe.Replace(oFileIn.ReadAll(),"$1 $2")
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonjour,
| Lire un fichier au format texte contenant des lignes puis | substituer le 50ème caractère de chaque ligne par un espace | si la ligne commence par un 4 ou un 6
Tentative de résolution via une expression régulière ;-)
Set oRe=New RegExp: oRe.Multiline=True oRe.Global=True: oRe.Pattern="(^[46].{48}).(.*)" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("C:FINFIN-E") Set oFileOut=oFs.CreateTextFile("C:FINAEICFIN", True) oFileOut.Write oRe.Replace(oFileIn.ReadAll(),"$1 $2")
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr