rK143
rK143

Reputation: 11

time variable in vb script

I m trying to use a variable in the VB script at multiple places. This variable is is being calculated everytime i call the variable.

is there a way the script can use the initial value of the variable?

For Example -

In Sub StartServers, the DatenTime variable has a certain time value (eg: 2014-01-16-16-10-01.50) and after 120 Seconds sleep time, the DatenTime value in the Sub routine SendMail has 120 seconds added to the value (eg: 2014-01-16-16-12-01.50) causing a different time stamp, and attachment to is not sent as it cannot find the file name.

Thanks in advance for any answers. Please let me know if need more details.

=============================

DatenTime = "%date:~10,4%-%date:~4,2%-%date:~7,2%_%time:~0,2%_%time:~3,2%_%time:~6,5%"

Sub StartServers
    wshShell.Run "E:\Automation\bin\queryhpe.cmd > E:\Automation\log\query_hpe_"&DatenTime&".log"
    WScript.Sleep 120000
End Sub

Sub SendMail
    On Error Resume Next
.
.
.
.
.
           Set .Configuration = iConf
           .To       = sEmailList.ReadLine
           .From     = "<[email protected]>"
           .Subject  = "STAGE: Querying Windows  Services at " & Time & " on " & Date
           .Textbody = "STAGE: Querying Windows  executed at " & Time & " on " & Date & " by " & sWho & "." & vbcrlf & vbcrlf & "Pls find the info on following location " &  "Pls Review attached logs for detailed information"
           .AddAttachment "E:\Automation\log\query_hpe_"&DatenTime&".log"
           .Send
       End With
    Loop
End Sub

Upvotes: 0

Views: 2988

Answers (2)

PatricK
PatricK

Reputation: 6433

You just need to create a variable above the Sub and store the Date/Time to it. Then refer to this variables in the Sub.

DatenTime = "%date:~10,4%-%date:~4,2%-%date:~7,2%_%time:~0,2%_%time:~3,2%_%time:~6,5%"

Dim StartDate, StartTime
StartDate = Date
StartTime = Time

Sub StartServers
    wshShell.Run "E:\Automation\bin\queryhpe.cmd > E:\Automation\log\query_hpe_"&DatenTime&".log"
    WScript.Sleep 120000
End Sub

Sub SendMail
    On Error Resume Next
.
.
.
.
.
           Set .Configuration = iConf
           .To       = sEmailList.ReadLine
           .From     = "<[email protected]>"
           .Subject  = "STAGE: Querying Windows  Services at " & StartTime & " on " & StartDate
           .Textbody = "STAGE: Querying Windows  executed at " & StartTime & " on " & StartDate & " by " & sWho & "." & vbcrlf & vbcrlf & "Pls find the info on following location " &  "Pls Review attached logs for detailed information"
           .AddAttachment "E:\Automation\log\query_hpe_"&DatenTime&".log"
           .Send
       End With
    Loop
End Sub

Upvotes: 0

Ansgar Wiechers
Ansgar Wiechers

Reputation: 200233

Don't use environment variables for constructing a timestamp string in VBScript. Use the appropriate VBScript functions instead:

Function LPad(v) : LPad = Right("00" & v, 2) : End Function

t  = Now
DatenTime = Year(t) & "-" & LPad(Month(t)) & "-" & LPad(Day(t)) _
  & "_" & LPad(Hour(t)) & "_" & LPad(Minute(t)) & "_" & LPad(Second(t)) _
  & "." & LPad(Left(Timer * 1000 Mod 1000, 2))

The expression Timer * 1000 Mod 1000 determines the number of milliseconds that have elapsed since the last full second.

Upvotes: 1

Related Questions