motorcross
Goto Top

Batch Daten vergleichen (Mehrzahl von Datum)

Hallo Administratoren,

ich versuche gerade in Batch einen Script zu schreiben der aus einer .txt Datei ein Datum ausliest und dieses mit dem Aktuellen vergleicht.
Und wenn das Datum in der txt Datei abgelaufen ist (also älter als das Aktuelle) soll gesagt werden "Datum ist abgelaufen"!
Ich weiß aber nicht wie ich das umsetzten soll.
Hätte jemand eine Idee?
Gruß Motorcross
Kommentar vom Moderator Biber am 29.01.2010 um 19:43:08 Uhr
Batch Daten vergleichen (Mehrzahl von Datum)
Wir könnten auch ganz unverkrampft "Batch Datumswerte vergleichen" schreiben...

Content-ID: 134698

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

bastla
bastla 29.01.2010 um 14:44:52 Uhr
Goto Top
Hallo Motorcross!

Idee: Wandle das jeweilige Datum in die Schreibweise "JJJJMMTT" um, dann kannst Du einfach mit "LSS" vergleichen ...

Grüße
bastla
hoko
hoko 29.01.2010 um 14:49:44 Uhr
Goto Top
Hallo,

hast du mal ein Beispiel, wie die Textdatei aussieht?

Gruß
Hoko
Motorcross
Motorcross 29.01.2010 um 14:54:12 Uhr
Goto Top
Hallo,
set /p datum=<test.txt
Gruß Motorcross
Motorcross
Motorcross 29.01.2010 um 14:55:06 Uhr
Goto Top
Hallo bastla,
köntest du mir sagen wie man das macht?
Gruß Motorcross
bastla
bastla 29.01.2010 um 16:11:09 Uhr
Goto Top
Hallo Motorcross!

Was hoko (sehr wahrscheinlich) wissen wollte (und weswegen auch meine Antwort so allgemein gehalten war): In welchem Format steht das Datum in der Datei?

Ebenfalls sinnvoll wäre es, die Schreibweise für das aktuelle Datum in Deinem System zu posten - bei mir liefert ein
echo %date%
zB 29.01.2010, während es auf einem anderen System gerne auch 29.01.10 oder Fr, 29.01.2010 sein kann.

Für die ersten beiden Variante könntest Du das gewünschte Format etwa so erzeugen:
for /f "tokens=1-3 delims=." %%a in ("%date%") do set "Heute=20%%c%%b%%a"  
set "Heute=%Heute:~-8%  
Anmerkung: Für Datümer ab 2100 wird diese Vorgangsweise leider eines Updates bedürfen ... face-wink

Grüße
bastla


[Edit] Da Du die Variable %Datum% für den aus der Textdatei eingelesenen Wert verwenden willst, auf %Heute% geändert [/Edit]
Motorcross
Motorcross 29.01.2010 um 16:25:18 Uhr
Goto Top
Hallo bastla,
bei mir wird %date% so angezeigt:29.01.2010
und kannst du auch in den Script einbauen, dass das Datum aus der test.txt herausgesucht wird und mit dem aktuellen vergleicht wird.
Und wenn das Datum in der test.txt älter als das Aktuelle ist, dass er error anzeigt.
bastla
bastla 29.01.2010 um 16:51:26 Uhr
Goto Top
... und was wirst Du dabei tun?

Eigentlich steht schon in diesem Thread praktisch alles, was Du benötigst ...

Grüße
bastla
Motorcross
Motorcross 29.01.2010 um 16:53:32 Uhr
Goto Top
kannst du mir das nochmal erklären?
Bitte!
Gruß Motorcross
60730
60730 29.01.2010 um 16:57:24 Uhr
Goto Top
Servus,

@Motorcross:
deine letze Frage ist doch rein theoretischer Natur... Bastla kriegt das hin, der löst auch komplexere Fälle.
Aber dein Einstieg in die Thematik war doch:

ich versuche gerade in Batch einen Script zu schreiben

Die Tipps, wie du das hinbekommst - hast du doch erhalten?

Spiel doch einfach mal ein bisschen mit Bastlas Zeile.
Da könnte dann ungefähr so was heraus kommen:
for /f "tokens=1-3 delims=." %a in ("%date%") do set "Datum=%a.%b.%c"  

Wobei du sicherlich den Unterschied / die Spielart schon erkannt hast - Bastla schreibt jeweils zwei %% - ich nur eines
Denn Bastlas Zeile ist für eine Batch
Meine "nur" zum Spielen in der Dosbox.

Und wenn du selber weiterspielst und dein Ergebnis mit Bastlas erstem Tipp kombinierst - kommst du von ganz alleine auf die Lösung.

Gruß
bastla
bastla 29.01.2010 um 19:33:50 Uhr
Goto Top
Hallo Motorcross!

Und das
@echo off & setlocal
set /p datum=<test.txt
for /f "tokens=1-3 delims=." %%a in ("%datum%") do set "DatumAusDatei=20%%c%%b%%a"  
set "DatumAusDatei=%DatumAusDatei:~-8%"  
for /f "tokens=1-3 delims=." %%a in ("%date%") do set "Heute=20%%c%%b%%a"  
set "Heute=%Heute:~-8%"  
if %DatumAusDatei% lss %Heute% echo Error
war dann wirklich so schwierig?

Wenn das Datumsformat in der Datei und im System übereinstimmt (wie bei Dir: Jahr jeweils 4-stellig), auch noch kürzer:
@echo off & setlocal
set /p datum=<test.txt
for /f "tokens=1-3 delims=." %%a in ("%datum%") do set "DatumAusDatei=%%c%%b%%a"  
for /f "tokens=1-3 delims=." %%a in ("%date%") do set "Heute=%%c%%b%%a"  
if %DatumAusDatei% lss %Heute% echo Error
Grüße
bastla
Motorcross
Motorcross 30.01.2010 um 17:14:06 Uhr
Goto Top
Ach so jetzt habe ich verstanden!
Vielen Dank bastla und Timo