denim44
Goto Top

Uhrzeit vergleichen

Hi @ all,

Ich möchte mit einer Batch in einem .txt file die Uhrzeit (englisches format) auslesen und in eine temp datei von der aktuellen Uhrzeit ausgehend, filtern.

Bsp.:

03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test


Also wenn es 4:00 PM spät ist, sollen alle einträge von 3:00:00 - 3:59:59 gefiltert werden

bzw. soll halt alles was mit 03:* .. PM anfängt gefiltert werden

Content-ID: 139209

Url: https://administrator.de/forum/uhrzeit-vergleichen-139209.html

Ausgedruckt am: 24.12.2024 um 01:12 Uhr

Biber
Biber 26.03.2010 um 10:57:50 Uhr
Goto Top
Moin Denim44,

das soltest du ohne viel Verrenkungen mit Find oder FindStr hinbekommen.

Demo am CMD-Prompt:
>type e:\schnipsel\pmhours.txt
03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/23/2010 05:08:14 PM Test
03/24/2010 07:08:14 PM Test
03/24/2010 04:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test
(=10:53:25  D:\temp=)
>findstr /c:"03/22/2010 03:" e:\schnipsel\pmhours.txt  
03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test

Die untere Zeile zieht aus der Beispieldatei "pmHours.txt" nur die Zeilen mit "03/22/2010 03:" heraus.
Wenn deine Anforderung nicht mehr Restriktionen hat als im Beitragstext angegeben, dann wäre auch eine simple Suche nach "LEERZEICHEN-03-DOPPELPUNKT" ausreichend.
>findstr /c:" 03:" e:\schnipsel\pmhours.txt  
03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test

Grüße
Biber
Denim44
Denim44 26.03.2010 um 11:13:04 Uhr
Goto Top
gut gut face-smile .. geht schonmal


Nur wie kann ich jetzt aus der Systemzeit (englisch) bspw.: 03: auslesen und in eine Variable packen??
Biber
Biber 26.03.2010 um 11:39:08 Uhr
Goto Top
Moin Denim44,

die Uhrzeit bekommst du über die Variable %time% angezeigt ....und die "Stunden" der Uhrzeit wären (bei meinen lokalen Einstellungen; Windows-Rechner) die ersten beiden Stellen davon
>echo %time% Std:[%time:~0,2%]
11:33:45,74 Std:[11]

Falls bei dir ähnliche Verhältnisse herrschen, dann kannst du diese Stunden (nach einer Prüfung auf "PM/AM") in eine Variable speichern:
...
Set "myHour=%time:~0,2%"
...

Beispiele zum Umgang mit Datums- und Zeitvariablen im Batch findest du aber auch über die Forumssuchfunktion.

Grüße
Biber
Denim44
Denim44 26.03.2010 um 11:42:42 Uhr
Goto Top
perfekt :D .. ich dank dir für die kompetetente und schnelle Hilfe Biber
bastla
bastla 26.03.2010 um 12:25:55 Uhr
Goto Top
@Biber

Interessanter wird das Filtern, wenn zusätzlich zwischen "AM" und "PM" unterschieden wird:
findstr /c:"03:..:.. PM" "e:\schnipsel\pmhours.txt"
sowie diverse Variationen davon (mit "*" anstelle von "." oder Angabe der Klasse "[0-9]" oder Maskierung der ":") liefern bei mir (unter XP) keine Ausgabe ...

Dass sich als Workaround ein zweiter Filtervorgang nur auf "PM" anbietet, ist natürlich klar.

Grüße
bastla
Biber
Biber 26.03.2010 um 12:36:16 Uhr
Goto Top
Moin bastla,

unterschätz die Redmonder PraktikantInnen nicht.
>type e:\schnipsel\pmhours.txt
03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/23/2010 05:08:14 PM Test
03/24/2010 07:08:14 PM Test
03/24/2010 04:08:14 PM Test
03/22/2010 03:08:14 AM Test
03/22/2010 03:08:14 AM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test
(=12:34:55  D:\temp=)
>findstr /R /C:".* 03:.*PM*." e:\schnipsel\pmhours.txt  
03/22/2010 03:08:12 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:08:14 PM Test
03/22/2010 03:09:15 PM Test

Grüße
Biber
bastla
bastla 26.03.2010 um 13:14:52 Uhr
Goto Top
@Biber
... womit wieder einmal die alte Bauernregel "Wer RegEx haben will, muss es auch sagen." bewiesen wäre ...

Thx
bastla