Access to the current time in windows batch script

FOR /F "TOKENS=1 DELIMS=:" %%A IN ('TIME/T') DO SET HH=%%A
FOR /F "TOKENS=2 DELIMS=:" %%A IN ('TIME/T') DO SET MM=%%A

now you have two variables %HH% for hours and %MM% for minutes. Hope this helped.


Time and date are defined in two system variables: %time% & %date%

(Beware, the format depends of the regionnal & language settings)

C:>echo %time%

17:16:13,39

C:>echo %date%

28/08/2009

C:>


Combining all of those posts yields an answer to the original question:

for /f "tokens=1-3 delims=:." %%A in ("%time%") do (

set HH=%%A

set MM=%%B

set SS=%%C)

Will load your HH MM and SS buckets with the respective values. You can, of course, type whatever variable names you want in place of those. (Barring reserved names.) You can also leave out the "." in the delims section, if you want fractional seconds to be stored in the last value. (%time% contains HH:MM:SS.ss)


What you have to do is basically use the %time% variable and specify to count a certain number of characters into the string to extract the part you want. Typing "echo %time%" in a cmd prompt returns something like this:

11:11:38.36

To get just the hour out of this string, type "echo %time:~-11,2%" to display just the first 2 characters. You are basically telling it to display the %time% variable - "echo %time...", count 11 characters backwards from the end of the string - "...:~11..." and grab 2 characters from that point - "...,2%"

To grab the minutes the command would be "echo %time:~8,2%"

To set the variable "hour" to the current hour you would type this:

set hour=%time:~-11,2%

You can also string parts together to create a custom format in whatever combo you need also. For example, to add dashes instead of a colon between the HH:MM:SS you would type this:

"echo %time:~-11,2%-%time:~-8,2%-%time:~-5,2%"

and get: HH-MM-SS

Hope this helps. We use the %date% variable and parts of it all the time to automatically create files in whatever string combo we need the filename to be in.