DOS Batch Date String Manipulation

Why do people make this so hard?  I see huge scripts on the internet dedicated to just this topic of parsing the date.  Here, it’s this simple:
First, let’s look what date looks like in DOS:

C:UsersAdmin>date /t
Tue 06/12/2012

With that in mind, you can also use the built-in %DATE% variable:

C:UsersAdmin>echo %DATE%
Tue 06/12/2012

Now that we have this information, let’s look at how to simplify this and come up with whatever format we want to display the date in…

C:UsersAdmin>echo %date:~-4,4%%date:~-7,2%%date:~-10,2%
20121206

String substitution; Read more about it here: DosTips
So you have replaced something like this:

@For /F tokens=1,2,3 delims=.  %%A in ('Date /t') do @(
Set Day=%%A
Set Month=%%B
Set Year=%%C
)
@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year% 

With a single, simple, line!
If you want to experiment further, try using %TIME% too. I use %DATE% and %TIME% in my backup/compression batch scripts for pre/post backup solutions in many cases and also for log files. Works like a champ.

Published by

Rich

Just another IT guy.

Leave a Reply

Your email address will not be published. Required fields are marked *