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

manipulation de fichiers sous windows10

3 réponses
Avatar
bob12345
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 fichiers 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 autres 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 de commande.


Cordialement
bob DORAN

3 réponses

Avatar
Olivier Miakinen
Le 18/12/2019 17:14, bob12345 a écrit :
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

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.
--
Olivier Miakinen
Avatar
Michel__D
Bonjour,
Le 18/12/2019 à 17:14, bob12345 a écrit :
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 fichiers
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 autres
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

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.
https://fr.wikibooks.org/wiki/Programmation_VBScript/Version_imprimable
https://docs.microsoft.com/fr-fr/powershell/
Avatar
Michel__D
Le 20/12/2019 à 08:17, Michel__D a écrit :
Bonjour,
Le 18/12/2019 à 17:14, bob12345 a écrit :
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 fichiers
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 autres
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

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.
https://fr.wikibooks.org/wiki/Programmation_VBScript/Version_imprimable
https://docs.microsoft.com/fr-fr/powershell/

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$SHAREFTCOMMUN_FORUM_ARCHIVEPARAMETRES.txt"
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