bastian94
Goto Top

Textdatei bestimmte strings auslesen, dateinamen einfügen, tabelle speichern

Hallo Leute,

ich bin erst seit kurzem am Skripten mit powershell/batch und stehe nun vor einem kniffligen Problem; ich weiß nicht wie ich das mit welchem tool lösen könnte.
Ich habe eine unstrukturierte Textdatei mit aufsteigender Uhrzeit und 6 "Spalten". Es gibt durchgehend vom Aufbau nur 2 fast identische Zeilen, nur in der 6ten Spalte ist ein anderer Text.

Die Spalten mit den Varianten: 1 : Uhrzeit, String, String, String, String, String Nummer(Order)
2 : Uhrzeit, String, String, String, String, String Nummer(Soll) String Nummer(Ist)

Aus dieser Textdatei möchte ich mir Uhrzeit und die Nummern auslesen lassen und exportieren.

Die Tabelle möchte ich mit folgenden Spaltenköpfen ausgeben: RechnerNr, Datum, Uhrzeit, OrderNr, Nummer(Soll), Nummer(Ist).

Die Spalten RechnerNr, Datum müssten vom Dateinamen (Datum-RechnerNr) in die Tabelle vorne importiert/kopiert werden.

Problematisch wird es bei der OrderNr. Zuerst kommt Variante/Zeile 1 mit einer OrderNr, darauffolgend kommt eine beliebige Anzahl an Varianten/Zeilen mit unterschiedlichen Nummer(Soll) und Nummer(Ist), welche eine Teilmenge der OrderNr sind.

Ich hoffe ihr könnt mir irgendwie folgen und weiterhelfen. Danke im Voraus für die Hilfe!

Content-ID: 392079

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

Ausgedruckt am: 24.11.2024 um 00:11 Uhr

137443
137443 09.11.2018 aktualisiert um 10:50:40 Uhr
Goto Top
Ich hoffe ihr könnt mir irgendwie folgen und weiterhelfen.
Mit Beispieldatei mit IST und SOLL Zustand sicherlich , so wird das ehrlich gesagt zum Ratespiel mit mehr Fragen als Antworten.

Gruß l.
Bastian94
Bastian94 09.11.2018 aktualisiert um 11:25:07 Uhr
Goto Top
Ach ja danke, anbei ist ein Beispiel. Uhrzeit und die Nummern interessieren mich. JobID Nummer soll OrderNr sein, benötigt Nummer(Soll) und gescannt Nummer(Ist).

Grüße Basti
unbenannt
137443
Lösung 137443 09.11.2018 aktualisiert um 12:05:57 Uhr
Goto Top
Bidde:
$folder = 'D:\Bastian94'  
gci $folder -File -Filter *.txt -PipelineVariable file | %{
    [regex]::matches((gc $_.Fullname -raw),'(?ism)JobId (\d+)(.*?)(?=JobId|\z)').Captures | ?{$_.Success} | %{  
        $jobid = $_.Groups[1].Value
        [regex]::matches($_.Groups[2].Value,'(?ism)^(\d{2}:\d{2}:\d{2}).*?Benötigt "(\d+)".*?Gescannt "(\d+)"').Captures | ?{$_.Success} | %{  
            [pscustomobject]@{
                RechnerNr = $file.BaseName.split("-")[1]  
                Datum = $file.BaseName.split("-")  
                Uhrzeit = $_.Groups[1].Value
                OrderNr = $jobid
                "Nummer(Soll)" = $_.Groups[2].Value  
                "Nummer(Ist)" = $_.Groups[3].Value  
            }
        }
    }
} | export-csv -LiteralPath "$folder\merged.csv" -Delimiter ";" -NoType -Encoding UTF8  
Bastian94
Bastian94 09.11.2018, aktualisiert am 12.11.2018 um 13:00:30 Uhr
Goto Top
Super, danke!