cerhu > comp.os.* > comp.os.ms-windows.programmation

bob12345 (18/12/2019, 18h14)
Bonjour,

Je souhaiterais faire ce qui suit.
Un truc vraiment pas simple du tout sous windows 10.
Il est question de ventiler des lignes de plusieurs fichiers dans des fichier
résultats, suivant des numéros présents dans un fichier PARAMETRES.

Peut-être que c’est possible avec les commandes AWK et GREP… ou autre
fonctionnalités ?
J'ai essayé... mais franchement... je donne ma langue au chat :)

Bref, je suis preneur si quelqu’un a la soluce :)

Explication du pb à travers un exemple simple, qui résume mon problème :

On me donne un fichier PARAMETRES, qui comporte des numéros :
fic PARAMETRES qui comporte par exemple 3 numéros
0123
1245
4568

Dans un dossier MONDOSSIER, j'ai par exemple deux fichiers :

FIC01.txt qui comporte les lignes suivantes
zsfsdf4545sdf1245drfgdgf799
fghgfhgfhfgh45454545fghfghfghfhfghfgh
sdgfdsg4568dfgdfgdfg

FIC02 qui comporte les lignes suivantes
zsfsdf45450123rfgdgf754
ereeeztertyerytrtyh
rtyrtyrty
fhfghfgh4568fghfghfgh

Le résultat attendu : 3 fichiers
fichier initulé 0123.txt, qui comporte les lignes suivantes
FIC02 - zsfsdf45450123rfgdgf754

fichier initulé 1245.txt, qui comporte les lignes suivantes
FIC01 - zsfsdf4545sdf1245drfgdgf799

fichier 03 initulé 4568.txt, qui comporte les lignes suivantes
FIC01 - sdgfdsg4568dfgdfgdfg
FIC02 - fhfghfgh4568fghfghfgh

En espérant que mon exemple est clair.
N'hésitez pas à me poser des questions si besoin.

Merci d'avance de vos réponses... si c'est possible bien sur par des lignes d
commande.

Cordialement
bob DORAN
Olivier Miakinen (19/12/2019, 01h36)
Le 18/12/2019 17:14, bob12345 a écrit :
[..]
> FIC01.txt qui comporte les lignes suivantes
> zsfsdf4545sdf1245drfgdgf799
> fghgfhgfhfgh45454545fghfghfghfhfghfgh
> sdgfdsg4568dfgdfgdfg
> FIC02 qui comporte les lignes suivantes
> zsfsdf45450123rfgdgf754
> ereeeztertyerytrtyh
> rtyrtyrty
> fhfghfgh4568fghfghfgh


Ok.

> Le résultat attendu : 3 fichiers


J'ai bien compris que pour chaque chaîne de caractères (forcément
numérique ?) du fichier PARAMETRES, tu crées un fichier dont le
nom est cette chaîne de caractères suffixée par « .txt »

> fichier initulé 0123.txt, qui comporte les lignes suivantes
> FIC02 - zsfsdf45450123rfgdgf754


C'est-à-dire la ligne numéro 1 du fichier 2

> fichier initulé 1245.txt, qui comporte les lignes suivantes
> FIC01 - zsfsdf4545sdf1245drfgdgf799


C'est-à-dire la ligne numéro 1 du fichier 1
> fichier 03 initulé 4568.txt, qui comporte les lignes suivantes
> FIC01 - sdgfdsg4568dfgdfgdfg
> FIC02 - fhfghfgh4568fghfghfgh


C'est-à-dire la ligne numéro 3 du fichier 1, puis la ligne numéro 4
du fichier 2.

> En espérant que mon exemple est clair.


Non, je n'ai pas compris comment tu choisis les lignes à mettre dans
chaque fichier.

> N'hésitez pas à me poser des questions si besoin.


J'aurais préféré « au besoin » ou « si nécessaire », mais bon.
Cela dit, ma première question est « comment choisis-tu les lignes ».
Comme seconde question, tu parles de AWK et GREP dans un groupe sur
Windows... est-ce que ça veut dire que tu as installé Cygwin sur
ce Windows, ou bien ces commandes existent en natif ? Si c'est le
dernier cas, as-tu une doc sur leur syntaxe exacte, car elle peut
être différente d'un système à un autre.
Michel__D (20/12/2019, 09h17)
Bonjour,

Le 18/12/2019 à 17:14, bob12345 a écrit :
[..]
> FIC02 qui comporte les lignes suivantes
> zsfsdf45450123rfgdgf754
> ereeeztertyerytrtyh
> rtyrtyrty
> fhfghfgh4568fghfghfgh
> Le résultat attendu : 3 fichiers
> fichier initulé 0123.txt, qui comporte les lignes suivantes
> FIC02 - zsfsdf45450123rfgdgf754


Ok, toutes les lignes qui contiennent une valeur issue du fichier PARAMETRES

> fichier initulé 1245.txt, qui comporte les lignes suivantes
> FIC01 - zsfsdf4545sdf1245drfgdgf799


Ok, comme précédemment.

> fichier 03 initulé 4568.txt, qui comporte les lignes suivantes
> FIC01 - sdgfdsg4568dfgdfgdfg
> FIC02 - fhfghfgh4568fghfghfgh


Ok, comme précédemment.

> En espérant que mon exemple est clair.
> N'hésitez pas à me poser des questions si besoin.


Moi pour ce genre de chose j'utilise en natif le VBScript qui est/devrait à terme être remplacer
par le powershell sinon comme mentionné par Olivier Miakinen il y a les outils linux via Cygwin.

[..]

[..]
Michel__D (20/12/2019, 21h50)
Le 20/12/2019 à 08:17, Michel__D a écrit :
> Bonjour,
> Le 18/12/2019 à 17:14, bob12345 a écrit :
> Ok, toutes les lignes qui contiennent une valeur issue du fichier PARAMETRES
> par le powershell sinon comme mentionné par Olivier Miakinen il y a les outils linux via Cygwin.
> [..]
> [..]


Pour le vbs un truc dans ce genre :

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim oCol, oFile, oFso
Dim iI, iJ, iK, sN, sPath, sT, asV()

sN = "C:\My Program Files\$SHAREFT\COMMUN\_FORUM\_ARCHIVE\PARAMETRES.t xt"
sPath = Left(sN, InstrRev(sN, "\"))
sN = Mid(sN, Len(sPath) + 1)
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oCol = CreateObject("System.Collections.ArrayList")
Set oFile = oFso.OpenTextFile(sPath & sN, ForReading)
iJ = 0
Do While oFile.AtEndOfStream <> True
Redim Preserve asV(iJ + 1)
sT = Trim(oFile.ReadLine)
asV(iJ) = sT
iJ = iJ + 1
Loop
oFile.Close

For iI = 1 to 2
If oFso.FileExists(sPath & "FIC" & Right("0" & iI, 2) & ".txt") Then
Set oFile = oFso.OpenTextFile(sPath & "FIC" & Right("0" & iI, 2) & ".txt", ForReading)
Do While oFile.AtEndOfStream <> True
sT = Trim(oFile.ReadLine)
For iK = 0 To iJ - 1
If Instr(1, sT, asV(iK)) > 0 Then
oCol.Add iK & "=FIC" & Right("0" & iI, 2) & " - " & sT
End If
Next
Loop
oFile.Close
End If
Next
Set oFile = Nothing

oCol.Sort()
iJ = -1
For iI = 0 To oCol.Count - 1
iK = Instr(1, oCol.Item(iI), "=")
If CLng(Left(oCol.Item(iI), iK - 1)) <> iJ Then
iF iI > 0 Then oFile.Close
iJ = CLng(Left(oCol.Item(iI), iK - 1))
Set oFile = oFso.OpenTextFile(sPath & asV(iJ) & ".txt", ForWriting, True)
End If
oFile.WriteLine Mid(oCol.Item(iI), iK + 1)
Next
If TypeName(oFile)<>"Nothing" Then oFile.Close
Set oFile = Nothing
Set oCol = Nothing
Set oFso = Nothing
Discussions similaires
pdfedit : Edition/manipulation de fichiers pdf sous Wheezy

Manipulation de fichiers DBF

Manipulation des fichiers dbx....

Manipulation de fichiers


Fuseau horaire GMT +2. Il est actuellement 11h42. | Privacy Policy