Question Chercher un bloc dans un fichier

Plus d'informations
il y a 7 mois 3 semaines #29533 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
Comme ceci

[code:1]$fichier = Get-Content \".\fichier.txt\" -Encoding Default
$result = $fichier | Select-String -Pattern \"--+.\",\"^The command completed successfully.$\"

$i = 0
Foreach($item in $result)
{
if($item.Line -match \"--+.\"«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$i++
$fichier[($Header)..($item.LineNumber-2)] | Out-File \".\tableau_$($i).txt\"
}[/code:1]

Voir ci joint

La pièce jointe tableau_1.txt est absente ou indisponible

<br><br>Message édité par: Troxsa, à: 17/12/19 13:13
Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #29534 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Merci, je n'ai même pas eu le temps de répondre :-)

Est-il possible que le résultat se retrouve dans un seul fichier ?

J'avais essayé comme ça mais ça rendait le résulat illisible :

[code:1]
$fichier = Get-Content \&quot;c:\temp\johndoe-IDT01049-Login.txt\&quot; -Encoding Default

$result = $fichier | Select-String -Pattern \&quot;--+.\&quot;,\&quot;^The command completed successfully.$\&quot;
$result
$final

Foreach($item in $result)
{
if($item.Line -match \&quot;--+.\&quot;«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$fichier[($Header)..($item.LineNumber-2)]
$final = $final + $fichier[($Header)..($item.LineNumber-2)]
}

Set-Content \&quot;c:\temp\essai3.txt\&quot; -Value $final[/code:1]

Ca doit être une bêtise ...

Merci à nouveau pour l'aide apportée.

Christophe

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #29535 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
quand on sait c'est facile mais quand on ne sait pas c'est galère :)


[code:1]$fichier = Get-Content \&quot;.\fichier.txt\&quot; -Encoding Default
$result = $fichier | Select-String -Pattern \&quot;--+.\&quot;,\&quot;^The command completed successfully.$\&quot;

Foreach($item in $result)
{
if($item.Line -match \&quot;--+.\&quot;«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$i++
$fichier[($Header)..($item.LineNumber-2)] | Out-File \&quot;.\tableau.txt\&quot; -Append
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #29538 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
C'est vrai que je me rends compte que je n'y connais pas grand chose.

Ca parait parfois si simple.

Merci pour l'aide apportée en tout cas, ça me sauve.

Je dois maintenant mettre tout ça dans un boucle pour travailler les 1100 fichiers, encore du plaisir en perspective ! :-)

Christophe

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #29541 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
testez cela


[code:1]$Files = Get-ChildItem -Path \&quot;.\Chemin\ou\se\trouve\les\fichiers\*.log\&quot; -Recurse

Foreach($file in $Files){
$fichier = Get-Content $file.FullName -Encoding Default
$result = $fichier | Select-String -Pattern \&quot;--+.\&quot;,\&quot;^The command completed successfully.$\&quot;
Foreach($item in $result)
{
if($item.Line -match \&quot;--+.\&quot;«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$fichier[($Header)..($item.LineNumber-2)] | Out-File \&quot;.\tableau.txt\&quot; -Append
}
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 mois 3 semaines #29542 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Ah oui, j'ai fait un peut autrement mais ça fait le taf :
[code:1]ForEach ($file in Get-ChildItem c:\temp\*.txt)
{

$fichier = Get-Content \&quot;$file\&quot; -Encoding Default

$result = $fichier | Select-String -Pattern \&quot;--+.\&quot;,\&quot;^The command completed successfully.$\&quot;
$resultat

Foreach($item in $result)
{
if($item.Line -match \&quot;--+.\&quot;«»)
{
$Header = $item.LineNumber - 3 # Header
continue
}
$i++
$fichier[($Header)..($item.LineNumber-2)] | Out-File \&quot;c:\temp\tableau.txt\&quot; -Append
}
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.387 secondes
Propulsé par Kunena