[Powershell] Jouer avec un fichier texte, partie 2
4 réponses
Polo
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent....
(Merci encore pour la soluce, les techniques me conviennent parfaitement !)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total".
A chaque fois que je trouve cette valeur, je souhaite remonter les 6
derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple)
...
...
Sous Total = 1300,5?
car j'achete 2 vaches à 1300 ?
car j'achete des carottes à 0,5?
Sous Total = 50 ?
car j'achete des cigarettes a 5?
car j'achete des CD pour 45?
...
...
J'obtiendrais alors en résultat
1300,5
1300
0,5
50
5
45
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
jbongran
Polo wrote:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !) Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple) ... ... Sous Total = 1300,5? car j'achete 2 vaches à 1300 ? car j'achete des carottes à 0,5? Sous Total = 50 ? car j'achete des cigarettes a 5? car j'achete des CD pour 45? ... ...
J'obtiendrais alors en résultat 1300,5 1300 0,5 50 5 45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs: Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i Set fso = CreateObject("Scripting.FileSystemObject") Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False) Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True) Do Until fIn.AtEndOfStream sLine = LCase(Trim(fIn.ReadLine)) If InStr(sLine, "sous total") Then arrTmp = Split(sLine, " = ") fOut.WriteLine Trim(arrTmp(1)) For i = 0 To 1 fOut.WriteLine Right(Trim(fIn.ReadLine), 6) Next End If Loop fIn.Close fOut.Close Set fIn = Nothing Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne correspond pas à l'exemple demandé (6 caractères des deux lignes suivantes;-) et le fichier de sortie ressemblera à ça: 1300,5? 1300 ? à 0,5? 50 ? s a 5? ur 45?
Polo wrote:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent....
(Merci encore pour la soluce, les techniques me conviennent
parfaitement !)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total".
A chaque fois que je trouve cette valeur, je souhaite remonter les 6
derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple)
...
...
Sous Total = 1300,5?
car j'achete 2 vaches à 1300 ?
car j'achete des carottes à 0,5?
Sous Total = 50 ?
car j'achete des cigarettes a 5?
car j'achete des CD pour 45?
...
...
J'obtiendrais alors en résultat
1300,5
1300
0,5
50
5
45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs:
Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i
Set fso = CreateObject("Scripting.FileSystemObject")
Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False)
Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True)
Do Until fIn.AtEndOfStream
sLine = LCase(Trim(fIn.ReadLine))
If InStr(sLine, "sous total") Then
arrTmp = Split(sLine, " = ")
fOut.WriteLine Trim(arrTmp(1))
For i = 0 To 1
fOut.WriteLine Right(Trim(fIn.ReadLine), 6)
Next
End If
Loop
fIn.Close
fOut.Close
Set fIn = Nothing
Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne
correspond pas à l'exemple demandé (6 caractères des deux lignes
suivantes;-) et le fichier de sortie ressemblera à ça:
1300,5?
1300 ?
à 0,5?
50 ?
s a 5?
ur 45?
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !) Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple) ... ... Sous Total = 1300,5? car j'achete 2 vaches à 1300 ? car j'achete des carottes à 0,5? Sous Total = 50 ? car j'achete des cigarettes a 5? car j'achete des CD pour 45? ... ...
J'obtiendrais alors en résultat 1300,5 1300 0,5 50 5 45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs: Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i Set fso = CreateObject("Scripting.FileSystemObject") Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False) Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True) Do Until fIn.AtEndOfStream sLine = LCase(Trim(fIn.ReadLine)) If InStr(sLine, "sous total") Then arrTmp = Split(sLine, " = ") fOut.WriteLine Trim(arrTmp(1)) For i = 0 To 1 fOut.WriteLine Right(Trim(fIn.ReadLine), 6) Next End If Loop fIn.Close fOut.Close Set fIn = Nothing Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne correspond pas à l'exemple demandé (6 caractères des deux lignes suivantes;-) et le fichier de sortie ressemblera à ça: 1300,5? 1300 ? à 0,5? 50 ? s a 5? ur 45?
Jacques Barathon [MS]
"Polo" wrote in message news:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Voici une réponse qui ne correspond pas tout à fait à la description de ton besoin:
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux lignes qui suivent celle qui contient "sous total": sur les deux lignes en question, j'affiche ce qui se trouve après le dernier espace. Tu peux modifier cette partie pour appliquer la logique d'affichage que tu veux.
Jacques
"Polo" <n@news.com> wrote in message
news:ei9UBE9HIHA.1208@TK2MSFTNGP03.phx.gbl...
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent....
(Merci encore pour la soluce, les techniques me conviennent parfaitement
!)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total".
A chaque fois que je trouve cette valeur, je souhaite remonter les 6
derniers caractères des 2 lignes en dessous...
Voici une réponse qui ne correspond pas tout à fait à la description de ton
besoin:
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux
lignes qui suivent celle qui contient "sous total": sur les deux lignes en
question, j'affiche ce qui se trouve après le dernier espace. Tu peux
modifier cette partie pour appliquer la logique d'affichage que tu veux.
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux lignes qui suivent celle qui contient "sous total": sur les deux lignes en question, j'affiche ce qui se trouve après le dernier espace. Tu peux modifier cette partie pour appliquer la logique d'affichage que tu veux.
Jacques
Polo
Bonsoir... et merci... Je me demande pquoi j'ai mis tous ces "?".... Un excès de généreusité peut-être...
Merci pour ce vbs... et a bientôt !
Polo
"jbongran" a écrit dans le message de news:
Polo wrote:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !) Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple) ... ... Sous Total = 1300,5? car j'achete 2 vaches à 1300 ? car j'achete des carottes à 0,5? Sous Total = 50 ? car j'achete des cigarettes a 5? car j'achete des CD pour 45? ... ...
J'obtiendrais alors en résultat 1300,5 1300 0,5 50 5 45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs: Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i Set fso = CreateObject("Scripting.FileSystemObject") Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False) Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True) Do Until fIn.AtEndOfStream sLine = LCase(Trim(fIn.ReadLine)) If InStr(sLine, "sous total") Then arrTmp = Split(sLine, " = ") fOut.WriteLine Trim(arrTmp(1)) For i = 0 To 1 fOut.WriteLine Right(Trim(fIn.ReadLine), 6) Next End If Loop fIn.Close fOut.Close Set fIn = Nothing Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne correspond pas à l'exemple demandé (6 caractères des deux lignes suivantes;-) et le fichier de sortie ressemblera à ça: 1300,5? 1300 ? à 0,5? 50 ? s a 5? ur 45?
Bonsoir...
et merci...
Je me demande pquoi j'ai mis tous ces "?"....
Un excès de généreusité peut-être...
Merci pour ce vbs... et a bientôt !
Polo
"jbongran" <jbongran@free.fr> a écrit dans le message de news:
eEEhwk9HIHA.5764@TK2MSFTNGP06.phx.gbl...
Polo wrote:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent....
(Merci encore pour la soluce, les techniques me conviennent
parfaitement !)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total".
A chaque fois que je trouve cette valeur, je souhaite remonter les 6
derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple)
...
...
Sous Total = 1300,5?
car j'achete 2 vaches à 1300 ?
car j'achete des carottes à 0,5?
Sous Total = 50 ?
car j'achete des cigarettes a 5?
car j'achete des CD pour 45?
...
...
J'obtiendrais alors en résultat
1300,5
1300
0,5
50
5
45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs:
Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i
Set fso = CreateObject("Scripting.FileSystemObject")
Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False)
Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True)
Do Until fIn.AtEndOfStream
sLine = LCase(Trim(fIn.ReadLine))
If InStr(sLine, "sous total") Then
arrTmp = Split(sLine, " = ")
fOut.WriteLine Trim(arrTmp(1))
For i = 0 To 1
fOut.WriteLine Right(Trim(fIn.ReadLine), 6)
Next
End If
Loop
fIn.Close
fOut.Close
Set fIn = Nothing
Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne
correspond pas à l'exemple demandé (6 caractères des deux lignes
suivantes;-) et le fichier de sortie ressemblera à ça:
1300,5?
1300 ?
à 0,5?
50 ?
s a 5?
ur 45?
Bonsoir... et merci... Je me demande pquoi j'ai mis tous ces "?".... Un excès de généreusité peut-être...
Merci pour ce vbs... et a bientôt !
Polo
"jbongran" a écrit dans le message de news:
Polo wrote:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !) Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Ex: (je me torture pour cet exemple) ... ... Sous Total = 1300,5? car j'achete 2 vaches à 1300 ? car j'achete des carottes à 0,5? Sous Total = 50 ? car j'achete des cigarettes a 5? car j'achete des CD pour 45? ... ...
J'obtiendrais alors en résultat 1300,5 1300 0,5 50 5 45
Merci pour le coup de main !
Polo
Bien que demandé en PowerShell, voici une réponse possible en vbs: Dim fso, fIn, fOut, sLine, arrTmp, sOutLine, i Set fso = CreateObject("Scripting.FileSystemObject") Set fIn = fso.OpenTextFile("D:testfile.txt", 1, False) Set fOut = fso.OpenTextFile("D:resultfile.txt", 2, True) Do Until fIn.AtEndOfStream sLine = LCase(Trim(fIn.ReadLine)) If InStr(sLine, "sous total") Then arrTmp = Split(sLine, " = ") fOut.WriteLine Trim(arrTmp(1)) For i = 0 To 1 fOut.WriteLine Right(Trim(fIn.ReadLine), 6) Next End If Loop fIn.Close fOut.Close Set fIn = Nothing Set fOut = Nothing
A noter que ce script correspond à l'énnoncé du besoin, et donc ne correspond pas à l'exemple demandé (6 caractères des deux lignes suivantes;-) et le fichier de sortie ressemblera à ça: 1300,5? 1300 ? à 0,5? 50 ? s a 5? ur 45?
Polo
Bonsoir Jacques,
Merci pour cette méthode... Comme d'hab, il va me falloir quelques jours pour digérer tout cela...!
A bientôt,
Polo
"Jacques Barathon [MS]" a écrit dans le message de news: O%23l$
"Polo" wrote in message news:
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent.... (Merci encore pour la soluce, les techniques me conviennent parfaitement !)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total". A chaque fois que je trouve cette valeur, je souhaite remonter les 6 derniers caractères des 2 lignes en dessous...
Voici une réponse qui ne correspond pas tout à fait à la description de ton besoin:
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux lignes qui suivent celle qui contient "sous total": sur les deux lignes en question, j'affiche ce qui se trouve après le dernier espace. Tu peux modifier cette partie pour appliquer la logique d'affichage que tu veux.
Jacques
Bonsoir Jacques,
Merci pour cette méthode...
Comme d'hab, il va me falloir quelques jours pour digérer tout cela...!
A bientôt,
Polo
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news: O%23l$639HIHA.3848@TK2MSFTNGP05.phx.gbl...
"Polo" <n@news.com> wrote in message
news:ei9UBE9HIHA.1208@TK2MSFTNGP03.phx.gbl...
Bonjour Jacques, bonjour à tous,
Nouvelle petite question pour prolonger mon post précedent....
(Merci encore pour la soluce, les techniques me conviennent parfaitement
!)
Je requete un nouveau fichier txt qui contient plein de lignes.
Je cherche la valeur "sous-total".
A chaque fois que je trouve cette valeur, je souhaite remonter les 6
derniers caractères des 2 lignes en dessous...
Voici une réponse qui ne correspond pas tout à fait à la description de
ton besoin:
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux
lignes qui suivent celle qui contient "sous total": sur les deux lignes en
question, j'affiche ce qui se trouve après le dernier espace. Tu peux
modifier cette partie pour appliquer la logique d'affichage que tu veux.
Ce que fait l'exemple ci-dessus, c'est afficher le dernier "mot" des deux lignes qui suivent celle qui contient "sous total": sur les deux lignes en question, j'affiche ce qui se trouve après le dernier espace. Tu peux modifier cette partie pour appliquer la logique d'affichage que tu veux.