sambucadrinker
Goto Top

Werte aus TXT Dateien auslesen und sortiert in neue Textdatei schreiben

Hallo liebe Freunde!

habe eine Aufgabe, wo ich mit dem Batch Script am besten, TXT Dateien durchsuchen muss und nach niedrigsten Werten sortiert, in eine separate TXT-Datei eine Auflistung darstelle.

1. Textdatei.
In eine Liste von TXT -Dateien wie Z.B. Dateiname "Teilemessung_101.txt" (101 ist eine Serialnummer)
werden Messwerte geschrieben.

Inhalt von "Teilemessung_101.txt" Textdatei:
....
SN:101

Tangential:
Grenzwert: 2,0 mm    Istwert: 0,9 mm

Verkippung:
Grenzwert: 0,05 mm    Istwert: 0,035 mm
 ...

2. Aufgabe
Alle Werte aus allen Textdateien im Ordner mit niedrigsten Istwerten raussuchen und in eine separate Datei sortiert darstellen.
Wert Verkippung-Istwert ist wichtiger als Tangential-Istwert.
Es wurde völlig ausreichen, wenn man nur nach Verkippung-Istwert sortierte Darstellung bekommt.

Beispiel einer sortierter Darstellung in eine separate Datei:
SN 101      Tangential 0,9     Verkippung 0,035
SN 110      Tangential 1,0     Verkippung 0,040
SN 120      Tangential 1,1     Verkippung 0,042
SN 102      Tangential 0,9     Verkippung 0,045
... usw....

Würde mich sehr freuen für alle Ratschläge

Content-ID: 668240

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

Ausgedruckt am: 26.09.2024 um 22:09 Uhr

Ted555
Lösung Ted555 18.09.2024 aktualisiert um 23:13:19 Uhr
Goto Top
Better move to Powershell
# Ordner mit Textdateien
$folder = "D:\Daten"  
# Ausgabedatei
$result = ".\ergebnis.csv"  
# Dateien durchsuchen
$data = foreach($file in Get-ChildItem $folder -Filter *.txt -File){
  # Suche nach Inhalt per Regex und gebe Daten als Object aus 
  if((Get-Content $file.Fullname -Raw) -match '(?ism)^SN:\s*([^\s]+).*?Istwert: ([\d,]+).*?Istwert: ([\d,]+)'){  
    [pscustomobject]@{
        SN = $matches[1]
        Tangential = [decimal]::Parse($matches[2],[cultureinfo]'de')  
        Verkippung = [decimal]::Parse($matches[3],[cultureinfo]'de')  
    }
  }
} 
# sortiere Daten und exportiere nach CSV
$data | sort-object Verkippung | export-csv $result -delimiter ";" -NoTypeInformation  
Beispiel

Alternativ geht's auch mit Select-String

# Ordner mit Textdateien
$folder = "D:\Daten"  
# Ausgabedatei
$result = ".\ergebnis.csv"  
Select-String -Path "$folder\*.txt" -Pattern '^SN:\s*([^\s]+)|Istwert:\s*([\d,]+)' -Allmatches | group Path | %{  
    [pscustomobject]@{
        SN = $_.Group[0].Matches.Groups[1].Value
        Tangential = [decimal]::Parse($_.Group[1].Matches.Groups[2].Value,[cultureinfo]'de')  
        Verkippung = [decimal]::Parse($_.Group[2].Matches.Groups[2].Value,[cultureinfo]'de')  
    }
} | sort Verkippung | export-csv $result -delimiter ";" -NoTypeInformation  
Beispiel

🖖
Ted555
Ted555 23.09.2024 aktualisiert um 13:33:02 Uhr
Goto Top
Kein Feedback ist auch ein Feedback. Bitte dann den Beitrag noch schließen und Lösungen markieren. Danke.