≡ Menu

How to get date / time in batch file

This post explains how to get current date and time from command prompt or in a batch file.

How to get date and time in a batch file

Below is a sample batch script which gets current date and time
Datetime.cmd

@echo off

for /F "tokens=2" %%i in ('date /t') do set mydate=%%i
set mytime=%time%
echo Current time is %mydate%:%mytime%

When we run the above batch file

C:\>datetime.cmd
Current time is 08/12/2015:22:57:24.62
C:\>

Get date from command line

To print today’s date on the command prompt, we can run date /t.

c:\>date /t
Thu 05/14/2015
c:\>

Just running date without any arguments prints the current date and then prompts to enter a new date if the user wants to reset it.

c:\>date
The current date is: Sat 05/16/2015
Enter the new date: (mm-dd-yy)
c:\>

In addition to date command, we also have an environment variable using which we can find today’s date.

c:\>echo %date%
Sun 05/17/2015

How to get only the date in MM/DD/YYYY format?

You may want to exclude the day (like ‘Sun’ in the above example) and print only the date in MM/DD/YYYY format. The below command works for the same.

for /F "tokens=2" %i in ('date /t') do echo %i

Example:

c:\>for /F "tokens=2" %i in ('date /t') do echo %i
05/14/2015
c:\>

Get time from command prompt

Similar to date command, we have the command time which lets us find the current system time. Some examples below.

c:\>time /t
11:17 PM

c:\>time
The current time is: 23:17:18.57
Enter the new time:
c:\>

As you can see, the command prints the time in different formats. It prints in 12 hour format when /t is added and in 24 hours format without /t

We can also get the current time from environment variables.

c:\>echo %time%
23:23:51.62
c:\>

Get date and time

c:\>echo  %date%-%time%
Sun 05/17/2015-23:21:03.34
18 comments… add one
  • sonu

    Sir I want to get all outdated drivers in our pc through command prompt please help and
    reply
    Thanks

  • MMW

    That last part is so helpful and outstanding! Thank you so much!! :D
    -Matthew

  • Jaganath

    I want the last week date from the current date :-This is the script,I am using for the getting the current date.
    for /F “tokens=2” %i in (‘date /t’) do echo %i
    05/14/2015

  • jake heilbroun

    these comments were helpful but how do you make a real time updating clock in 12 hour format in a batch file?

    • Matto58

      Create a file called realtimeClock.bat.
      This is the contents of realtimeClock.bat:
      ——
      @echo off
      :getTime
      echo The current time is %time%
      cls
      goto :getTime
      ——
      Run, and enjoy.

  • Pakistani

    Excellent guideline. If the hour (time) is less than 10 then %time% return a space before the hour, so I prefer to use the ‘time /t’ approach.

    • Sauce

      You can solve that by:
      echo %TIME: =0%

      (there’s a space between : and =). That will replace the space with a 0
      Let’s say you wanted to use the variable to create a filename or log based on the current time:

      rem Extract the hour and minute from the time
      set TM=%TIME:~0,2%%TIME:~3,2%
      rem Zero-pad the hour if it is before 10am
      set TM=%TM: =0%
      echo %TM%

      output is:
      0803
      for 8:03am

  • ZAHIMI

    I need to get the files based on current date. How ya the script look like. Can someone assist me

  • markus

    how to do this with date and time of a file ?
    Why doesn’t it work with “ftime, fdate” ?

    please any hint how to do this would be great !

    • Sam

      Reply to markus’ question: How to do this with date and time of a file ?

      To read the date+time of a file, call DIR in a FOR loop, like so:
      FOR /F “tokens=1,2,3,4,*” %%a in (‘DIR “filename.ext”/4 ^| find “/”‘) do set “filedatetime=%%a %%b %%c” & set “filesize=%%d” & set “filename=%%e” & REM Do whatever you want here

      Note: There is an apostrophe (single-quote) between the double-quote and the right-paren.

      You can, of course, use any switches you want in the DIR command to refine your selection criteria. Type DIR /? for more info.

      The FIND command filters the output of DIR to eliminate the header and footer. (DIR /B only lists the filenames, not the dates.)

      “tokens=1,2,3,4,*” parses the output into separate variables. The asterisk at the end puts the entire filename (including spaces) into the fifth variable.

  • pravin

    how to output date /T and time /T?
    like sun 1/1/2017 3:52 PM

  • Julia

    Hello, I would need a batch file, with does the Reset function in Date and Time/Change Date and Time/change calendar settings/Reset.

  • Rafeeq Moosagie

    good day

    Is it possible to get the date and then use it as an input string in a for loop so that the day can increment

    Thank you

  • Tony

    I need a .bat script to change the system date one day ahead, (change it to tomorrow’s date). That’s it.

  • am
  • jawad

    hello
    I need to run a file in a certain date without using wndows Task Scheduler.
    how can I do that using batch file?
    please help me.

  • jawad

    hello
    I need to run a file in a certain date without using windows Task Scheduler.
    how can I do that using batch file?
    please help me.
    please answer me through my G-mail
    thanks alot

  • Sam

    All of the above scripts which call both time and date (or %time% and %date%) suffer from one minor problem: time and date are called separately, so if the script runs just before midnight (a very narrow window, to be sure – at most a few milliseconds), the date could roll over between the two calls and your result would be 24 hours early (i.e. just after midnight on the date that the command started).

    Here are 2 solutions:
    1.
    for /f “tokens=2 delims==” %%I in (‘wmic os get localdatetime /format:list’) do set datetime=%%I
    set datetime=%datetime:~0,8%-%datetime:~8,6%
    wmic gets the date + time in an atomic operation, so no rollover is possible.
    The second line formats datetime in the form I needed for what I used it for. You can modify this line to format however suits your needs.

    2.
    :timeloop
    set mydate=%date%
    set mytime=%time%
    if mydate NEQ %date% goto :timeloop

    If the date rolls over between the two calls to %date%, just go back and try again.

Leave a Comment