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-ID: 6905712267

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

Ausgedruckt am: 20.11.2024 um 02:11 Uhr

3063370895
3063370895 25.04.2023 aktualisiert um 09:50:20 Uhr
Goto Top
Hi,

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

-Thomas
BlueEyePhoenix
BlueEyePhoenix 25.04.2023 um 09:44:41 Uhr
Goto Top
Genau es sind mehrere Txt-Dateien. und wenn wert1 und wert2 fehlen soll es übersprungen werden.
3063370895
3063370895 25.04.2023 aktualisiert um 09:54:15 Uhr
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
BlueEyePhoenix
BlueEyePhoenix 25.04.2023 um 10:16:15 Uhr
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.
6247018886
Lösung 6247018886 25.04.2023 aktualisiert um 10:41:45 Uhr
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
BlueEyePhoenix
BlueEyePhoenix 25.04.2023 um 11:20:45 Uhr
Goto Top
Das funktioniert super, Danke für die schnelle Hilfe.