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-Key: 392079

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

Printed on: April 19, 2024 at 08:04 o'clock

Mitglied: 137443
137443 Nov 09, 2018 updated at 09:50:40 (UTC)
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.
Member: Bastian94
Bastian94 Nov 09, 2018 updated at 10:25:07 (UTC)
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
Mitglied: 137443
Solution 137443 Nov 09, 2018 updated at 11:05:57 (UTC)
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  
Member: Bastian94
Bastian94 Nov 09, 2018, updated at Nov 12, 2018 at 12:00:30 (UTC)
Goto Top
Super, danke!