Bonjour à tous,
Encore une fois je tourne en rond.
Lors de la lecture d'un fichier, et lorsque je match une valeur, j'aurai besoin de récupérer la valeur de la ligne suivante quitter la boucle.
Je vous remercie encore pour vos lumières.
Rakhann
Bonjour à tous,
Encore une fois je tourne en rond.
Lors de la lecture d'un fichier, et lorsque je match une valeur, j'aurai besoin de récupérer la valeur de la ligne suivante quitter la boucle.
Je vous remercie encore pour vos lumières.
Rakhann
Salut,
regarde le cmdlet select-string , paramètre -Context.
help select-string -parameter Context
Tutoriels Delphi Win32/Delphi .NET/Oracle/PowerShell - FAQ Delphi - FAQ Delphi .NET
Beatus, qui prodest, quibus potest.
Bonjour Laurent,
Merci pour ton aide.
Grace à toi, j'ai réussi à me dépatouiller.
Pour ce code, j'ai agrandi le nombre de ligne à récupérer à 4 et suivant le cas, je récupère celle que j'ai besoin.
Il y a certainement plus simple et plus rapide, mais celui-ci me donne le résultat voulu.
Rakhann
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 param( $chemin, $cible ) $repls = @(Get-ChildItem -File $chemin) foreach ($file in $repls) { $nbr = 0 $reference = select-string $file -pattern "Message Text" -Context 0, 4 $file.Name -match '(.+)\.D' | Out-Null $SITE = $Matches[1] $file.Name -match '\.D(.+)' | Out-Null $DATEJ = $Matches[1] $fichier = $file.Name (Get-Content "$chemin$file" | where { $_ -notmatch '^\s*$' }) | sc "$chemin$file" $content = Get-Content "$chemin$file" foreach ($line in $content){ $value = ($reference)[$nbr].context.DisplayPostContext $ref = $value[1] $ref = $ref.Trim() if ($ref -match "1/1") {$ref = $value[3] $ref = $ref.Trim() } add-Content -path "$cible$site.($ref).$DATEJ.txt" $line if ($line -match "{CHK:") {$nbr = $nbr + 1} } }
Partager