omussmann
Goto Top

Batch systemzeit auslesen

Hallo an das Forum,

ich möchte mit einer Batch-Datei das Systemdatum auslesen und wenn es einem bestimmten Datum entspricht, dann soll eine Befehl ausgeführt werden.

Habt Ihr eine Idee?

LG
Oliver

Content-ID: 190350

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

bastla
bastla 28.08.2012 um 23:48:35 Uhr
Goto Top
Hallo OMussmann!

Verwende einen geplanten Task ...

Grüße
bastla
Christian25
Christian25 29.08.2012 um 00:00:27 Uhr
Goto Top
teste doch mal %time% %date%
;)
OMussmann
OMussmann 29.08.2012 um 00:01:03 Uhr
Goto Top
Danke für den Hinweis. Das hilft mir aber nicht, denn die Batch-Datei soll durch einen User manuell ausgeführt werden ...
Christian25
Christian25 29.08.2012 um 00:12:37 Uhr
Goto Top
du kannst mittels set die variablen zerlegen...
set /?
und dann ne if abfrage später als 15 uhr...
das war GTR als op...


if/?
bringt klarheit
OMussmann
OMussmann 29.08.2012 um 00:16:50 Uhr
Goto Top
mein ansatz war so:

set x=date

if /i x EQU "28-08-2012" (
echo ja
) else (
echo nein
)
Christian25
Christian25 29.08.2012 um 00:25:28 Uhr
Goto Top
set x=%date%

und dann x zerlegen...


Hier ein beispiel:


%PATH:~10,5%

Dies erweitert die PATH-Umgebungsvariable und verwendet dann nur fünf
Zeichen ab dem elften Zeichen (Offset=10) des erweiterten Ergebnisses. Wenn die
Länge nicht angegeben ist, wird der Rest des Variablenwerts verwendet.
Wenn eine der Zahlen (Offset oder Länge) negativ ist, dann wird der angegebene
Wert der Länge des Umgebungsvariablenwerts hinzugefügt.

%PATH:~-10%

extrahiert die letzten 10 Zeichen der Variable PATH.

%PATH:~0,-2%

extrahiert alle, außer den letzten 2, Zeichen der Variable PATH.


ist hoffe ich verständlich

Gruß
OMussmann
OMussmann 29.08.2012 aktualisiert um 00:36:22 Uhr
Goto Top
leider nicht wirklich. wie sähe das in meinem beispiel konkret aus?
warum soll ich x zerlegen?
ist das format des datums denn richtig? ich verwende - als trennzeichen.
bastla
bastla 29.08.2012 aktualisiert um 00:38:00 Uhr
Goto Top
Hallo OMussmann!

Wenn Du Dir die Ausgabe von
echo %date%
ansiehst, weißt Du auch, wie die Zeile
if /i x EQU "28-08-2012" (
richtig lauten muss (wobei das "x" ja gleich durch "%date%" ersetzt werden kann) ...
Wozu soll denn übrigens die Aktion gut sein?

Grüße
bastla

P.S.: Magst Du nicht eine ansprechendere Formatierung für Deinen Batchansatz verwenden (geht auch noch im Nachhinein face-wink)?
Christian25
Christian25 29.08.2012 aktualisiert um 00:48:29 Uhr
Goto Top
 
C:\Users\Admin>echo %date%
29.08.2012

C:\Users\Admin>echo %date:~-4%
2012
sind wir im richtigen jahr ? 


C:\Users\Admin>echo %date:~3,-5%
08
monats check


set jahr=%date:~-4%
if '%jahr%'=='2012' cls & echo wir sind im jahr 2012  



oder sonst halt mit den operatoren


EQU - gleich
NEQ - nicht gleich
LSS - kleiner als
LEQ - kleiner als oder gleich
GTR - größer als
GEQ - größer als oder gleich

genug anregungen ?
bastla
bastla 29.08.2012 aktualisiert um 00:49:39 Uhr
Goto Top
@ Christian25

Vielleicht solltest Du noch ergänzen, dass entweder auf beiden Seiten des Vergleichsoperators Anführungszeichen zu verwenden sind oder eben auf keiner Seite ... face-wink

Grüße
bastla
OMussmann
OMussmann 29.08.2012 aktualisiert um 00:51:43 Uhr
Goto Top
sorry, da ich hier nur umts und kein wlan habe, schreibe ich von einem mobilen device.

okay das format für das datum muss "28.08.2012" lauten. merci ... face-smile

ich möchte mit dieser mechanismus verhindern, dass nach einem bestimmten datum eine datensicherung durchgeführt wird. meine mutter ist da etwas schnell und unbedacht ...

die änderung hat nichts gebracht ... er zeigt nein an ... das datum hatte ich natürlich auf den 29.08.2012 geändert ...

lg
olli
Christian25
Christian25 29.08.2012 um 00:54:28 Uhr
Goto Top
C:\Users\Admin>if '%date%'=='29.08.2012' echo heute ist ein schoener tag  
heute ist ein schoener tag
sofern das dir genügt...

ja, bastla auf das hab ich ganz vergessen... is schon länger her das ich mit batch arbeitete...
bastla
bastla 29.08.2012 aktualisiert um 00:56:23 Uhr
Goto Top
Hallo OMussmann!

Wenn Du allerdings prüfen willst, ob es schon nach einem bestimmten Datum ist, solltest Du Dir die Vorschläge von Christian25 genauer ansehen und das aktuelle Datum tatsächlich in die Form "JJJJ-MM-TT" umwandeln - dann kannst Du nämlich mit "GTR" vergleichen ...

Grüße
bastla
Leopold.Bloom
Leopold.Bloom 29.08.2012 um 00:57:33 Uhr
Goto Top
@echo off

set "datum=%date%"  
set "mydate=29.08.2012"  
set "mydate2=31.08.2012"  

set "mytime=00:30:00"  
set "mytime2=01:30:00"  

IF %datum% EQU %mydate% ECHO HEUTE IST MEIN TAG %mydate%
IF %datum% NEQ %mydate2% ECHO HEUTE IST NICHT MEIN TAG %mydate2%

call :gettime

IF %timestamp% GTR %mytime% ECHO ES IST SCHON NACH %mytime% UHR
IF %timestamp% LSS %mytime2% ECHO ES IST NOCH VOR %mytime2% UHR

:gettime

SET ZEIT=%TIME%
SET ZEIT=%ZEIT: =0%
SET ZEIT=%ZEIT:~-11,8%
set "timestamp=%ZEIT%"  
set "datetime=%date% %ZEIT%"  

goto :eof

So funktioniert es zumindest bei mir.

LG aus HH

Leopold
Leopold.Bloom
Leopold.Bloom 29.08.2012 um 01:00:01 Uhr
Goto Top
Wenn Du das Datum auf GTR überprüfen willst hat bastla natürlich recht.

LG

Leo
OMussmann
OMussmann 29.08.2012 um 01:08:07 Uhr
Goto Top
jetzt passt es. vielen dank ... bastla und christian25.