Click here to Skip to main content
13,352,879 members (45,676 online)
Click here to Skip to main content
Add your own
alternative version


14 bookmarked
Posted 29 Sep 2003

Use Date & Time in Batch/Log Files

, 1 Feb 2008
Rate this:
Please Sign up or sign in to vote.
Use date and time in batch/log files


Have you ever tried to use date and time in logfiles or batch/command files?
This is not easy without special software. For me, this was a problem because I needed a separate logfile every time an event happened. I also needed this to create backup schedules. The possibilities of batch command are too limited, and different language OS will react differently, so it is hard to roll such batch files out in a multi language OS environment.


The solution is very simple. I run a VB script where it is easy to get date time and other parameters. These values are stored in environment variables which can be used in batch files.
Because these environment variables are only valid in that particular shell, we need to call the batch file within the VB Script.

Copy the following code in a file called RunNow.cmd:

' RunNow.vbs
' (c) 2008 Computech.
'     Initially Version 2003.
'     2/2/2008 Extra Functionality
' Written by Peter Verijke
Dim dDay, dLDOM, dLDOY, dLFOW, dLFOM
Dim ArgObj
Dim BatchFile
Dim sCommand

Dim WshShell ' as object
Dim objEnv ' as collection
Dim sGetMyVar  ' as string

' Get the Arguments object
Set ArgObj = WScript.Arguments

' Test to make sure there is at least one command line arg - the command
If ArgObj.Count < 1 Then
End If

BatchFile = ArgObj(0)

Set WshShell = WScript.CreateObject("WScript.Shell")
Set objEnv = WshShell.Environment("PROCESS")

dNow = Now()
dLDOM = DateSerial(Year(dNow),Month(dNow) + 1,0)
dLDOY = DateSerial(Year(dNow) + 1, 1,0)
'Friday of this week
dLFOW = (dNow + (5 - Weekday(dNow, vbMonday)))
'Last Friday of Month
dLFOM = (dLDOM + (5 - Weekday(dLDOM, vbMonday)))

objEnv("Year") = Year(dNow)
objEnv("Month") = Right("0" & Month(dNow), 2)
objEnv("Day") = Right("0" & Day(dNow), 2)
objEnv("Hour") = Right("0" & Hour(dNow), 2)
objEnv("Minute") = Right("0" & Minute(dNow), 2)
objEnv("Second") = Right("0" & Second(dNow), 2)

'Day of Week
objEnv("DOW") = Weekday(dNow, vbMonday)
'Day of Week Name
objEnv("DOWN") = WeekDayName(WeekDay(dNow), 1)
'Week of Month
objEnv("WOM") = -Int(-((WEEKDAY(dNow-DAY(dNow)+1, 2) + DAY(dNow) -1) / 7))
'Last Day of Month
objEnv("LDOM") = Right("0" & Day(dLDOM), 2)
'Last Day of Year
objEnv("LDOY") = Right("0" & Day(dLDOY), 2)
'Last Friday of Week
objEnv("LFOW") = Right("0" & Day(dLFOW), 2)
'Last Friday of Month
objEnv("LFOM") = Right("0" & Day(dLFOM), 2)

sCommand = "%COMSPEC% /C " 

WshShell.Run(sCommand + BatchFile) 


' Display Help Message
Sub DisplayHelpMessage()
    Dim sHelpMessage
    sHelpMessage = "Usage:" & vbCrLf
    sHelpMessage = sHelpMessage & Wscript.FullName & _
	" RunNow <CommandFile|BatchFile>" & vbCrLf
    sHelpMessage = sHelpMessage & _
	"Optionally use environment variables in file: _
	%Year% %Month% %Day% %Hour% %Minute% %Second%" & vbCrLf
    sHelpMessage = sHelpMessage & _
	"%DOW% %DOWN% %WOM% %LDOM% %LDOY% %LFOW% %LFOM%" & vbCrLf
    WScript.Echo sHelpMessage
End Sub


As you can see in the source Help Message, it is sufficient to use the environment variables %Year% %Month% %Day% %Hour% %Minute% or %Second% in your batch files. To give an example: you could make a command file called mydir.cmd with the following contents:

dir > MyLog%Year%%Month%%Day%-%Hour%%Minute%%Second%.log 

Instead of running this file directly, run via the VB Script:

RunNow.vbs mydir.cmd 

Now, there are also some extra environment variables like Last Day of Month, Week of Month etc. These variables can also be used for naming or comparing to take other actions in batch files. I use it to create Day, Week and Month Backups for some data.

That's it.

I hope this will be useful to you.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Peter Verijke
Founder Computech bvba
Belgium Belgium
I´m a freelance ICT consultant and Technical Project Manager for the last 15 years already.
Before that, I was a Software Developer for the Pharmaceutical and Petrochemical industry.
I developed a very wide knowledge in the ICT world due to my intrest.
This includes Networking (Lan, Wan), Routing Switching Bridging, etc...
Windows environment, which has no secrets for me.
Developing: To many languages to mension here.
Of course, the latest one on the list is dot net.

You may also be interested in...


Comments and Discussions

GeneralJust made use of this Pin
Offbeatmammal31-Dec-08 11:30
memberOffbeatmammal31-Dec-08 11:30 
Questionhow can i use this? Pin
blajarbot4-Jan-07 21:26
memberblajarbot4-Jan-07 21:26 
GeneralAM or PM Pin
Anonymous22-Jan-05 17:03
sussAnonymous22-Jan-05 17:03 
GeneralRe: AM or PM Pin
Anonymous22-Jan-05 17:39
sussAnonymous22-Jan-05 17:39 
GeneralRe: AM or PM Pin
____0113-Jan-07 17:44
member____0113-Jan-07 17:44 
QuestionCan be done with batch commands alone Pin
Paul Bartlett18-Dec-03 0:27
memberPaul Bartlett18-Dec-03 0:27 
AnswerRe: Can be done with batch commands alone Pin
RabidCow18-Dec-03 10:11
memberRabidCow18-Dec-03 10:11 
GeneralRe: Can be done with batch commands alone Pin
funny thing18-Dec-03 10:54
memberfunny thing18-Dec-03 10:54 
GeneralRe: Can be done with batch commands alone Pin
Peter Verijke19-Dec-03 0:13
memberPeter Verijke19-Dec-03 0:13 
GeneralRe: Can be done with batch commands alone Pin
Anonymous25-Mar-05 1:36
sussAnonymous25-Mar-05 1:36 
GeneralRe: Can be done with batch commands alone Pin
Anonymous8-Aug-05 9:45
sussAnonymous8-Aug-05 9:45 
AnswerRe: Can be done with batch commands alone Pin
Peter Verijke18-Dec-03 23:32
memberPeter Verijke18-Dec-03 23:32 
GeneralRe: Can be done with batch commands alone Pin
Paul Bartlett19-Dec-03 1:30
memberPaul Bartlett19-Dec-03 1:30 
GeneralRe: Can be done with batch commands alone Pin
aaac00724-Dec-03 3:32
memberaaac00724-Dec-03 3:32 
GeneralRe: Can be done with batch commands alone Pin
Anonymous9-Mar-04 20:01
sussAnonymous9-Mar-04 20:01 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.180111.1 | Last Updated 1 Feb 2008
Article Copyright 2003 by Peter Verijke
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid