String aus Textdatei in Datum umwandeln
Hallo zusammen,
ich stecke nicht so in der Batch-Programmierung drin und fand ach bei Google nicht den passenden Ansatz.
Deshalb möchte ich mich jetzt an euch wenden. Es geht um das folgende Problem:
Eine Textdatei hat viele Zeilen mit folgender Struktur:
user1 (Wed Mar 27 10:15:00 2019)
user2 (Tue Apr 02 06:20:15 2019)
user3 (Tue Apr 02 09:38:37 2019)
user4 (Fri Mar 29 09:37:27 2019)
user5 (Thu Mar 28 20:39:51 2019)
und so weiter...
Ich möchte jetzt das Datum (in der Klammer) so umrechnen, dass man über das Datum bestimmte Zeilen rausfiltern kann
und davon den Usernamen (die ersten Zeichen bis zum Leerzeichen) in eine Variable packen, um diese in einem Script weiterzuverwenden.
Vorher hab ich schon mit "for /n" experimentiert, komme aber dort nicht weiter.
Habt ihr da eventuell eine Idee, wie man das lösen kann?
Vielen Dank im Voraus.
ich stecke nicht so in der Batch-Programmierung drin und fand ach bei Google nicht den passenden Ansatz.
Deshalb möchte ich mich jetzt an euch wenden. Es geht um das folgende Problem:
Eine Textdatei hat viele Zeilen mit folgender Struktur:
user1 (Wed Mar 27 10:15:00 2019)
user2 (Tue Apr 02 06:20:15 2019)
user3 (Tue Apr 02 09:38:37 2019)
user4 (Fri Mar 29 09:37:27 2019)
user5 (Thu Mar 28 20:39:51 2019)
und so weiter...
Ich möchte jetzt das Datum (in der Klammer) so umrechnen, dass man über das Datum bestimmte Zeilen rausfiltern kann
und davon den Usernamen (die ersten Zeichen bis zum Leerzeichen) in eine Variable packen, um diese in einem Script weiterzuverwenden.
Vorher hab ich schon mit "for /n" experimentiert, komme aber dort nicht weiter.
Habt ihr da eventuell eine Idee, wie man das lösen kann?
Vielen Dank im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 573162
Url: https://administrator.de/contentid/573162
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
11 Kommentare
Neuester Kommentar
Batch kennt keinen Datums-Datentyp, und für sowas sowas nimmt man heute gleich die Powershell
Das Ergebnis kannst du dann filtern bis der Arzt kommt, z.B.
$file = 'D:\test.txt'
$data = gc $file | ?{$_.trim() -match '^\s*([^\s]+)\s*\(([^\)]+)\)'} | select @{n='Username';e={$matches[1]}},@{n='Date';e={[datetime]::ParseExact($matches[2],'ddd MMM dd HH:mm:ss yyyy',[cultureinfo]::InvariantCulture)}}
$data
$data | ?{$_.Date -lt (get-date '01.04.2019')}
Zitat von @tg6300:
Vielen Dank für die schnelle Antwort.
Hab dein Script mal auf die Datei losgelassen, aber leider scheint die Variable leer zu sein
Wurde mit deinen Daten die du hier (leider ohne Codetags) gepostet hast natürlich vorher erfolgreich getestet!Vielen Dank für die schnelle Antwort.
Hab dein Script mal auf die Datei losgelassen, aber leider scheint die Variable leer zu sein
user1 (Wed Mar 27 10:15:00 2019)
user2 (Tue Apr 02 06:20:15 2019)
user3 (Tue Apr 02 09:38:37 2019)
user4 (Fri Mar 29 09:37:27 2019)
user5 (Thu Mar 28 20:39:51 2019)
Eigentlich sollte doch der Inhalt der txt-Datei mit formatierten Datum in der Variable stehen, oder sehe ich das falsch?
In der Variablen Data befindet sich nach Durchlauf der Textdatei Objekte mit den Eigenschaften Username und Date. Wenn das nicht der Fall ist hast du das Skript nicht korrekt angewendet oder die Ausgabgsdaten sind nicht so wie sie oben stehen.Und NEIN, das ist kein Batch sondern Powershell falls du das überlesen haben solltest.
Hallo,
Du willst einfach nur "über das Datum bestimmte Zeilen rausfiltern"?
Dann versuchs doch mit findstr und evtl. regular expressions:
oder etwas schöner aufbereitet:
Gruß
...
Du willst einfach nur "über das Datum bestimmte Zeilen rausfiltern"?
Dann versuchs doch mit findstr und evtl. regular expressions:
findstr /R /C:"(.* Apr 02 .* 2019)" Datei.txt
set dd=02
set mmm=Apr
set yyyy=2019
set file=Datei.txt
findstr /R /C:"(.* %mmm% %dd% .* %yyyy%)" %file%
Gruß
...
Zitat von @tg6300:
Sorry, es war mein Fehler. Ich habe nur den für mich interessanten Teil geschrieben (user1...).
Die Datei hat noch einiges in den Kopfzeilen stehen .
Wie kann ich jetzt die unterschiedlichen vorgestellten Leerzeichen entfernen, oder bei der Abfrage ignorieren?
Code ist oben an deine Situation angepasstSorry, es war mein Fehler. Ich habe nur den für mich interessanten Teil geschrieben (user1...).
Die Datei hat noch einiges in den Kopfzeilen stehen .
Wie kann ich jetzt die unterschiedlichen vorgestellten Leerzeichen entfernen, oder bei der Abfrage ignorieren?
Weil -lt bedeutet kleiner als , und das sind alles Zeiten die kleiner sind als der 29.03 .
Wenn du alle Daten eines bestimmten Tages haben willst egal welche Uhrzeit dann so
Einfach mal mit Powershell und dessen DateTime-Objekt beschäftigen .
Wenn du alle Daten eines bestimmten Tages haben willst egal welche Uhrzeit dann so
$data | ?{$_.Date.Date -eq (get-date '29.03.2019')}
Einfach mal mit Powershell und dessen DateTime-Objekt beschäftigen .
Na also, dann bitte auch den Beitrag schließen.