Bat file to call A.bat if time is less than 19:45 and to call B.bat if time is greater than 19:45 (i can not use windows task scheduler in this case because i have setting which makes my download manager to trigger this parent bat file each time a file is downloaded through this download manager)
views:
203answers:
3
+1
Q:
Bat file to call A.bat if time is less than 19:45 and to call B.bat if time is greater than 19:45
i can not use windows task sheduler in this case because i have setting which makes my download manager to trigger this parent bat file each time a file is downloaded through this download manager
dhiraj05
2010-04-19 12:10:45
+4
A:
You can use the following code as a baseline (you can use bat
files but I prefer cmd
as an extension):
@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 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
Keep in mind that %time%
is the same format as you get from the time
command and this may depend on locale. The format I'm getting is 20:17:28.48
for arounf 8:15pm but your result may be different.
If it is, just adjust the substrings when setting hh
and mm
. The command:
set mm=!tm:~3,2!
sets mm
to the two characters of tm
at offset 3 (where offset 0 is the first character).
If you're not a big fan of spaghetti code, even in batch, you could also use:
@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 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
paxdiablo
2010-04-19 12:15:55
Just curious: is there no 'else' in the Windows batch language?
Adriano Varoli Piazza
2010-04-19 12:24:29
@Adriano, it's not the most adaptable of languages but you _can_ do some things: `else` and `and` are shown. I usually emulate `or` with multiple `if`s setting a flag then an `if` based on that flag. Primitive but, if the only tool you have is the jaw of a mammoth, you can't be too fussy :-)
paxdiablo
2010-04-19 12:40:10
Thanks for the explanation. I'm just spoiled by the *sh languages.
Adriano Varoli Piazza
2010-04-19 12:46:27
Thanks paxdiablo. I was away from my computer i just tried your suggestion. it is working fine, fulfilling my all expectations. I appreciate your prompt response.
dhiraj05
2010-04-19 15:34:15