blueeyephoenix
Goto Top

Powershell Get-Content Ordner auslesen

Hallo Community,

ich habe da mal eine Frage zu Get-Content und komme nicht weiter. Eventuell hat hier jemand eine Idee oder Ansatz wie ich es lösen kann.

Ich habe einen Ordner in den täglich 10-20 Datensätze einlaufen, die wiederum 20-30 Zeilen haben. Hier möchte ich jetzt aber nur 3 bestimmte Zeilen auslesen.

$Datum = @(Get-Content -path C:\Info\*.txt | Where-Object {$_.Contains("Date")})  
$wert1 = @(Get-Content -path C:\Info\*.txt | Where-Object {$_.Contains("Art")})  
$wert2 = @(Get-Content -path C:\Info\*.txt | Where-Object {$_.Contains("Klasse")})  

Hier habe ich jetzt das Problem das ab und an ein Datensatz reinläuft der keinen wert1 und wert2 enthält, und durch das Datum dann die Zeilen verschiebt. Kann ich Daten ohne Wert1 und Wert2 überspringen lassen?

Leider weiß ich aber nicht wie ich das am besten umsetze.

Vielen Dank

Content-Key: 6905712267

Url: https://administrator.de/contentid/6905712267

Printed on: April 28, 2024 at 14:04 o'clock

Mitglied: 3063370895
3063370895 Apr 25, 2023 updated at 07:50:20 (UTC)
Goto Top
Hi,

also es sind mehrere TXT-Dateien, und wenn eine keinen Wert1 und keinen Wert2 beinhaltet, soll die Datei übersprungen werden?

-Thomas
Member: BlueEyePhoenix
BlueEyePhoenix Apr 25, 2023 at 07:44:41 (UTC)
Goto Top
Genau es sind mehrere Txt-Dateien. und wenn wert1 und wert2 fehlen soll es übersprungen werden.
Mitglied: 3063370895
3063370895 Apr 25, 2023 updated at 07:54:15 (UTC)
Goto Top
Versuch das mal:

$results = @()
Get-ChildItem -Path C:\Info\*.txt -File | Foreach-Object {
    $content = Get-Content $_.FullName
    if ($content -match "Art" -and $content -match "Klasse") {  
        $results += @{
            Date  = $content | Select-String "Date"  
            Wert1 = $content | Select-String "Art"  
            Wert2 = $content | Select-String "Klasse"  
        }
    }
} 

$results

Wenn du noch Beispieldateien posten könntest, könnte dir besser geholfen werden

-Thomas
Member: BlueEyePhoenix
BlueEyePhoenix Apr 25, 2023 at 08:16:15 (UTC)
Goto Top
Das Script gibt zwar keinen Fehler aus aber zeigt leider auch die results nicht an.

Start:--'  
Time:10-10'  
Code: UFT8'  
Hst:5'  
Date:20230417'  
Date2:20230418'  
Wert0:123123'  
Wert1:20232504-1'  
Wert2+Teil2
Type:223'  
Type2+225'  
Tcode+1'  
QTY+1'  
So sind die Listen aufgebaut mal sind es ein paar Felder mehr mal fehlen welche.
Mitglied: 6247018886
Solution 6247018886 Apr 25, 2023 updated at 08:41:45 (UTC)
Goto Top
Zitat von @BlueEyePhoenix:
Start:--'
Time:10-10'
Code: UFT8'
Hst:5'
Date:20230417'
Date2:20230418'
Wert0:123123'
Wert1:20232504-1'
Wert2+Teil2
Type:223'
Type2+225'
Tcode+1'
QTY+1'

So sind die Listen aufgebaut mal sind es ein paar Felder mehr mal fehlen welche.

$results = Get-ChildItem C:\info\*.txt -File | ?{(Get-Content $_.Fullname -Raw) -match "(?ism)^Date:([^\r\n]+).*?^Wert1[:\+]([^\r\n]+).*?^Wert2[:\+]([^\r\n]+)"} | %{  
    [pscustomobject]@{
        Date = $matches[1]
        Wert1 = $matches[2]
        Wert2 = $matches[3]
    }
}
$results
Cheers briggs
Member: BlueEyePhoenix
BlueEyePhoenix Apr 25, 2023 at 09:20:45 (UTC)
Goto Top
Das funktioniert super, Danke für die schnelle Hilfe.