Bat-Datei zum Aufrufen von A.bat, wenn die Zeit weniger als 19:45 Uhr ist und angerufen wird B.bat, wenn die Zeit größer als 19:45 ist (ich kann in diesem Fall Windows Task Scheduler nicht verwenden, weil ich Einstellungen habe, die meinen Download Manager veranlassen, diese Eltern Bat Datei jedes Mal zu starten, wenn eine Datei über diesen Download Manager heruntergeladen wird)Bat-Datei zum Anrufen von A.bat, wenn die Zeit weniger als 19:45 Uhr ist, und zum Anrufen von B.bat, wenn die Zeit größer als 19:45 ist
Antwort
Wie wäre es mit Windows Taskplaner?
Überprüfen Sie die DATE and TIME Befehle hier.
Sie können den folgenden Code als Grundlage verwenden (Sie bat
Dateien verwenden können, aber ich ziehe es cmd
als Erweiterung):
@echo off
setlocal enableextensions enabledelayedexpansion
set tm=%time%
:: Test data on lines below.
:: set tm=18:59:59.00
:: set tm=19:00:00.00
:: set tm=19:44:59.00
:: set tm=19:45:00.00
:: set tm=23:59:59.99
set hh=!tm:~0,2!
set mm=!tm:~3,2!
if !hh! lss 19 (
call a.cmd
goto :done
)
if !hh! equ 19 (
if !mm! lss 45 (
call a.cmd
goto :done
)
)
call b.cmd
:done
endlocal
Beachten Sie, dass %time%
das gleiche Format wie Sie aus dem time
erhalten Befehl und dies kann von Gebietsschema abhängen. Das Format, das ich bekomme, ist 20:17:28.48
für etwa 20.15 Uhr, aber Ihr Ergebnis kann anders sein.
Wenn dies der Fall ist, passen Sie die Teilstrings einfach an, wenn Sie hh
und mm
einstellen. Der Befehl:
set mm=!tm:~3,2!
Sätze mm
die beiden Zeichen tm
bei 3 versetzt (wobei 0 Versatz ist das erste Zeichen).
Wenn Sie nicht ein großer Fan von Spaghetti-Code sind, auch im Batch, können Sie auch verwenden:
@echo off
setlocal enableextensions enabledelayedexpansion
set tm=%time%
:: Test data on lines below.
:: set tm=18:59:59.00
:: set tm=19:00:00.00
:: set tm=19:44:59.00
:: set tm=19:45:00.00
:: set tm=23:59:59.99
set hh=!tm:~0,2!
set mm=!tm:~3,2!
if !hh! lss 19 (
call a.cmd
) else (
if !hh! equ 19 if !mm! lss 45 (
call a.cmd
) else (
call b.cmd
)
)
endlocal
Nur neugierig: gibt es kein 'sonst' in Windows Batch-Sprache? –
Gibt es in der Windows-Stapelsprache kein 'oder'? :) –
@Adriano, es ist nicht die anpassungsfähigste Sprache, aber Sie können einige Dinge tun: 'else' und' and' werden angezeigt. Normalerweise emuliere ich 'oder' mit mehreren' if's setzt ein Flag und dann ein 'if' basierend auf diesem Flag. Primitiv, aber, wenn das einzige Werkzeug, das Sie haben, der Kiefer eines Mammuts ist, können Sie nicht zu pingelig sein :-) – paxdiablo
ich kürzlich etwas zu tun, war ähnlich und meine Lösung ein for-Schleife war - nicht erstaunlich kompakt, aber bekam den Job zu erledigen:
for /f "tokens=1,2,3,4 delims=:,. " %%i in ("%time%") do (
echo Timegrab = %%i %%j %%k %%l
set hr=%%i
set mn=%%j
set sc=%%k
set ms=%%l
)
Dann alles, was Sie tun müssen, wäre eine IF-Anweisung zu prüfen, ob% hr% betrug weniger als 19 und Mio.%% weniger als 45.
- 1. Wie validiere ich, wenn die eingegebene Zeit größer ist als die zuvor eingegebene Datepicker-Steuerung?
- 2. mclapply Benutzer Zeit größer als die verstrichene Zeit
- 3. Wenn die Zeit abgelaufen ist
- 4. Wie zeigt man Zeit, die weniger als ein Tag ist?
- 5. Wenn Benchmarking, was die abgelaufene CPU-Zeit weniger als die Benutzer-CPU-Zeit
- 6. Benutzer Zeit größer als Echtzeit
- 7. Wenn Zeit größer als X aktualisiert wird, tun
- 8. Wie Funktion von der Uhr anrufen?
- 9. Verwenden von C++ zum Anrufen und Verwenden der Windows-Spracherkennung
- 10. Ausgang boolean wenn die Zeit länger als 10 Sekunden
- 11. DataMapper, wenn anrufen Finalize
- 12. Wenn anrufen Savechanges
- 13. Größer als weniger, Python
- 14. Die Zeit ist falsch, wenn die Datetime in yii2
- 15. Was ist die c-Programm-Implementierung von natürlichen Logs einer Zahl, die größer als 1000 ist?
- 16. Wenn mysql_num_rows größer als 0 ist
- 17. javascript wenn die Zahl größer ist als Nummer
- 18. MongoDB Wie schreibe ich Abfrage für das Überprüfen von Array von Werten für Zeitintervalle größer als und weniger als Zeit
- 19. vergleichen, wenn BigDecimal größer als Null ist
- 20. berechnen gewählte Zeit größer oder kleiner als aktuelle Zeit
- 21. Zeit zum Löschen von Zeigern
- 22. Machen Sie Kalender-Datei, wenn die Zeit in Tagen ist
- 23. Linux Uhr Befehl mit mehreren Anrufen verwenden
- 24. Verwenden von JRuby zum direkten Anrufen von Android-Java-Methoden
- 25. PHP Datum Zeit größer als heute
- 26. überprüfen Sie die aktuelle Zeit ist größer als definierte Zeitschienen 4
- 27. Excel, IF Größer als Funktion, Zeit und Datum
- 28. SQL-Zeichenfolge Vergleich, größer als und weniger als Operatoren
- 29. Android - warum aktuelle Zeit ist weniger als eine Rück Datum Zeit im Kalender
- 30. Lucene.Net größer als/weniger als TermRangeQuery?
Ich kann Windows Task Sheduler in diesem Fall nicht verwenden, weil ich Einstellungen habe, die meinen Download-Manager dazu veranlasst, diese Eltern Bat-Datei jedes Mal zu starten, wenn eine Datei über diesen Download-Manager heruntergeladen wird – dhiraj05