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

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

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

Member: Biber
Biber Mar 26, 2010 at 09:57:50 (UTC)
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
Member: Denim44
Denim44 Mar 26, 2010 at 10:13:04 (UTC)
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??
Member: Biber
Biber Mar 26, 2010 at 10:39:08 (UTC)
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
Member: Denim44
Denim44 Mar 26, 2010 at 10:42:42 (UTC)
Goto Top
perfekt :D .. ich dank dir für die kompetetente und schnelle Hilfe Biber
Member: bastla
bastla Mar 26, 2010 at 11:25:55 (UTC)
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
Member: Biber
Biber Mar 26, 2010 at 11:36:16 (UTC)
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
Member: bastla
bastla Mar 26, 2010 at 12:14:52 (UTC)
Goto Top
@Biber
... womit wieder einmal die alte Bauernregel "Wer RegEx haben will, muss es auch sagen." bewiesen wäre ...

Thx
bastla