dax4fun
Goto Top

Batch Zeitabfrage mit else Anweisung

Wie in der Überschrift habe ein Batch ständig am rennen nur kann ich nicht die Zeit Bestimmen wann es wahr ist (z.B. 2:05 Uhr) das eine weitere Batch ausgeführt wird, hab es mit dem hier versucht :

if %time:~-11,2% lss 2 goto start


doch das rennt immer in schleife 2 Std. und ich müsste immer eine txt verwenden wann die Batch schon ausgeführt wurde damit sie nicht wieder ausgeführt wird

kennt wer eine elegante Lösung, da eine Batch schon rennt brauche ich keine AT Lösung

danke

Content-ID: 223968

Url: https://administrator.de/forum/batch-zeitabfrage-mit-else-anweisung-223968.html

Ausgedruckt am: 23.12.2024 um 15:12 Uhr

colinardo
colinardo 07.12.2013 aktualisiert um 18:15:09 Uhr
Goto Top
Hallo dax4fun,
die Beschreibung deines Vorhabens wird hier nicht ganz klar, deshalb wende mich erst mal nur an deinen Versuch der nicht funktioniert:
Dein Vergleich funktioniert nicht, da du bei der Ausgabe von Time ein Leerzeichen vor einer einstelligen Stunde bekommst. Dieses musst du entweder erst durch eine 0 ersetzen
set tm=%time:~0,2%
set /a tm=%tm: =0%
oder das ganze direkt mit set /a in eine Zahl umwandeln:
set /a tm=%time:~0,2%
if "%tm%" lss "2" (goto start) else (goto woandershin)  
Grüße Uwe
dax4fun
dax4fun 07.12.2013 aktualisiert um 18:35:36 Uhr
Goto Top
Ich versuche es nochmals face-smile

Ich habe ein Batch das schon ständig rennt (ab Computerstart im Hintergrund) und da wollte ich nur ein paar Zeilen einfügen wenn es 2:05 ist führe ein weiteres Batch aus nur um die Uhrzeit einmal täglich

Danke
colinardo
colinardo 07.12.2013 aktualisiert um 18:59:43 Uhr
Goto Top
das kommt jetzt drauf an wie deine Batch aussieht..
@echo off & setlocal ENABLEDELAYEDEXPANSION
set counter=1
set /a hours=%time:~0,2%
set /a minutes=%time:~3,2%

if "%hours%:%minutes%" == "2:5" (  
  if "!counter!" == "1" (  
    call anderebatch.cmd
    set /a counter +=1
  )
)
Du musst dann den Counter halt dann auf 1 zurücksetzen wenn ein neuer Tag anbricht, den Uhrzeit-Vergleich kannst du ja genauso machen.
dax4fun
dax4fun 07.12.2013 um 19:39:49 Uhr
Goto Top
Ich glaube das schaut sehr gut aus ;) danke

theoretisch kann ich einen ping zum überbrücken auf 2:06 verwenden und dann den counter wieder auf 0 setzen

Danke
colinardo
colinardo 07.12.2013 aktualisiert um 19:42:05 Uhr
Goto Top
Zitat von @dax4fun:
den counter wieder auf 0 setzen
im Beispiel musst du Ihn auf 1 setzen...