Question Chercher un bloc dans un fichier

Plus d'informations
il y a 7 mois 3 semaines #29552 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
Vous avez de la chance j'ai que ça a faire aujourd'hui lol

essayez avec ça


[code:1]$Files = Get-ChildItem -Path \".\fichier.txt\"


$FinalTable = @()
Foreach($file in $Files)
{
$fichier = Get-Content $file.FullName -Encoding Default
$result = $fichier | Select-String -Pattern \"--+.\",\"^The command completed successfully.$\"

for ($ii = 0; $ii -lt $fichier.Count; $ii++)
{
if($result[$ii] -match \"--+.\"«»)
{
$Header = $fichier[$result[$ii].LineNumber - 3] # Header
$IntDataStart = $result[$ii].LineNumber
$IntDataEnd = $result[$ii+1].LineNumber-2 # Fin d'un tableau
$Data = $fichier[$IntDataStart..$IntDataEnd]
for ($i = 0; $i -lt $Data.Count; $i++) {
$Status = $Data[$i].SubString(0,13)
$Local = $Data[$i].SubString(13,10)
$Remote = $Data[$i].SubString(23,($Data[$i].Length-23))
$FinalTable += [PSCustomObject ]@{
Status = $Status.Trim()
Local = $Local.Trim()
Remote = $Remote.Trim()
}
}
}

}
}
$FinalTable[/code:1]

c'est pas au point mais ça fonctionne, je vous laisse poursuivre :laugh:<br><br>Message édité par: Troxsa, à: 17/12/19 15:25

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

Plus d'informations
il y a 7 mois 3 semaines #29553 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Bonjour,

C'est un autre point de vue, beaucoup moins facile à comprendre pour moi, j'avoue.

Merci en tout cas pour l'effort et l'aide apportée.

Avec l'autre solution, j'y suis presque, je me bas un peu avec les substring ...

Christophe

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

Plus d'informations
il y a 7 mois 3 semaines #29554 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Bonjour,

Avec l'aide apportée par les différents membres dans ce post, je suis arrivé à ce que je voulais :

[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;

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

(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot;Microsoft Windows Network\&quot;,\&quot;\&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot;
\&quot;,\&quot;\&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot;Status Local Remote Network\&quot;,\&quot;\&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot;OK\&quot;,\&quot; \&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot; \&quot;,\&quot;\&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) -replace \&quot; \&quot;,\&quot;\&quot; | Out-File \&quot;c:\temp\tableau.txt\&quot;
(Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default) | Where-Object { $_ } | Out-File \&quot;c:\temp\tableau.txt\&quot;

$result = Get-Content \&quot;c:\temp\tableau.txt\&quot; -Encoding Default
Foreach($item in $result)
{
$lettre = '\&quot;' + $item.Substring(0,2) + '\&quot;,'
$i = $item.Length - 10
$chemin = '\&quot;' + $item.Substring(10,$i) + '\&quot;'
$laligne = $lettre + $chemin.TrimEnd() | Out-File \&quot;c:\temp\resultat.csv\&quot; -Append
}
[/code:1]

J'imagine qu'il y a certainement moyen de rendre cela plus efficace et sexy mais ça semble faire le \&quot;taf\&quot; nécessaire.

Je vais le tester sur 1100 fichiers, on va voir ce que ça donne :-)

Merci à nouveau à tout le monde !!!!!

Christophe

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

Plus d'informations
il y a 7 mois 3 semaines #29558 par Troxsa
Réponse de Troxsa sur le sujet Re:Chercher un bloc dans un fichier
ça donne quoi alors ? :P


:)

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

Plus d'informations
il y a 7 mois 3 semaines #29561 par crahier
Réponse de crahier sur le sujet Re:Chercher un bloc dans un fichier
Bonjour,

J'y suis presque ;)

Il me reste encore un soucis avec la lettre de lecteur qui est parfois décalée, pas au début de la ligne mais avec des espaces devant.

Je bidouille encore un peu ...

Christophe

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

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

Vous pouvez faire une recherche avec REGEX en faisant des groupes puis reprendre les groupes pour les ajoutés dans chaque champs (enfin je me comprends pas facile a donner les explications)

Je peux vous faire un exemple :) je métrise pas beaucoup mais j'arrive a m'en sortir avec regex



si possible cliquez sur le petit pouce vers le haut ou vers le bas pour le karma, ça sers pas a grand chose mais c'est toujours valorisant !

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

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