Batch - Datenfiltern anhand bestimmter Voraussetzungen (nicht älter als 30 Tage)
Guten Tag liebe Gemeinde,
ich bin gerade dabei ein kleines Batch-Skript zu erstellen, was mir meine Daten filtert.
Ich würde gerne aus einer Textdatei jeweils immer die Zeile in einer Zieldatei stehen haben, bei dem der Wert in der 2. Spalte kleinste ist, aber anhand des Datums, was nicht älter sein darf als 30 Tage.
Geht das mit Batch?
TXT-Input:
TXT-Output:
Mit den besten sonnigsten Grüßen
ich bin gerade dabei ein kleines Batch-Skript zu erstellen, was mir meine Daten filtert.
Ich würde gerne aus einer Textdatei jeweils immer die Zeile in einer Zieldatei stehen haben, bei dem der Wert in der 2. Spalte kleinste ist, aber anhand des Datums, was nicht älter sein darf als 30 Tage.
Geht das mit Batch?
TXT-Input:
1000-001;5,00;19.07.2022;
1000-001;3,00;14.07.2022;
1000-001;5,00;19.07.2022;
1000-001;5,00;19.06.2022;
1000-001;5,25;19.07.2022;
1000-001;4,00;19.07.2022;
1000-002;5,25;19.04.2022;
1000-002;4,00;19.06.2022;
1000-002;2,00;01.07.2022;
TXT-Output:
1000-001;3,00;14.07.2022;
1000-002;2,00;01.07.2022;
Mit den besten sonnigsten Grüßen
Please also mark the comments that contributed to the solution of the article
Content-Key: 3379572611
Url: https://administrator.de/contentid/3379572611
Printed on: May 4, 2024 at 13:05 o'clock
1 Comment
Moin,
Mit Powershell ist das Ganze ein Kinderspiel:
Powershell Leitfaden für Anfänger
Gruß Thomas
Zitat von @freshman2017:
Ich würde gerne aus einer Textdatei jeweils immer die Zeile in einer Zieldatei stehen haben, bei dem der Wert in der 2. Spalte kleinste ist, aber anhand des Datums, was nicht älter sein darf als 30 Tage.
Geht das mit Batch?
alleine schon das Datum -30 Tage zu berechnen und danach zu filtern ist mit Batch kaum anständig möglich.Ich würde gerne aus einer Textdatei jeweils immer die Zeile in einer Zieldatei stehen haben, bei dem der Wert in der 2. Spalte kleinste ist, aber anhand des Datums, was nicht älter sein darf als 30 Tage.
Geht das mit Batch?
Mit Powershell ist das Ganze ein Kinderspiel:
# Quelldatei und Zieldatei
$Source = "C:\Pfad\zur\Import.csv"
$Target = "C:\Pfad\zur\Ausgabe.csv"
# Als CSV-Daten importieren
$CSV = Import-CSV -Path $Source -Delimiter ';' -Header 'Nummer','Wert','Datum'
# Datei nach Datum filtern und nach Werten Sortieren
$CSV = $CSV | Where {[datetime]::Parse($_.Datum) -ge (Get-Date).Date.AddDays(-30)} | Sort {[double]$_.Wert}
# Für jede Nummer den niedrigsten Wert ausgeben
$Output = $CSV | Group 'Nummer' |Foreach {$_.Group}
# In Text umwandeln und Ausgeben
($Output | ConvertTo-CSV -NoTypeInformation -Delimiter ';').Replace('"','') | Select -Skip 1 | Set-Content $Target
Gruß Thomas