У меня есть запрос, который корректно срабатывает через CMD:
Да ну? Не верю.
По вызову:
1. Перенаправление организует командный процессор, так что вызывать придётся именно его.
2. Кавычки в строковых константах достаточно удваивать.
3. Лучше использовать .Run с параметром ожидания.
4. Путь к скрипту надо указывать полностью.
5. Чтобы меньше путаться, лучше разделить формирование самой команды и её вызов в отдельные переменные.
По формату:
1. Разобраться, как правильно задавать фильтры.
2. Надо либо разобраться, как формируются значения времени в двенадцатичасовом (12-hour clock) формате:
Option Explicit
Dim arrDateTimes
Dim elem
arrDateTimes = Array( _
CDate("31.12.2011 00:00:00"), _
CDate("31.12.2011 00:00:01"), _
CDate("31.12.2011 00:59:59"), _
CDate("31.12.2011 01:00:00"), _
CDate("31.12.2011 01:00:01"), _
CDate("31.12.2011 11:59:59"), _
CDate("31.12.2011 12:00:00"), _
CDate("31.12.2011 12:00:01"), _
CDate("31.12.2011 23:59:59") _
)
For Each elem In arrDateTimes
WScript.Echo elem, vbTab, ShowEnUsDateTime(elem)
Next
WScript.Quit 0
Function ShowEnUsDateTime(dtDateTime)
SetLocale("en-us")
ShowEnUsDateTime = FormatDateTime(dtDateTime, vbShortDate) & " " & FormatDateTime(dtDateTime, vbLongTime)
SetLocale("ru")
End Function
31.12.2011 12/31/2011 12:00:00 AM
31.12.2011 00:00:01 12/31/2011 12:00:01 AM
31.12.2011 00:59:59 12/31/2011 12:59:59 AM
31.12.2011 01:00:00 12/31/2011 1:00:00 AM
31.12.2011 01:00:01 12/31/2011 1:00:01 AM
31.12.2011 11:59:59 12/31/2011 11:59:59 AM
31.12.2011 12:00:00 12/31/2011 12:00:00 PM
31.12.2011 12:00:01 12/31/2011 12:00:01 PM
31.12.2011 23:59:59 12/31/2011 11:59:59 PM
либо научиться использовать имеющиеся для этого средства.
Итог всех выкладок:
Option Explicit
Dim strCommand
With WScript.CreateObject("WScript.Shell")
strCommand = "cscript.exe """ & .ExpandEnvironmentStrings("%SystemRoot%\system32\eventquery.vbs") & _
""" /fi ""Type eq Error"" /fi ""Datetime eq " & _
GetDateTimeForEventQuery(CDate(CStr(Date()) & " 00:00:00")) & "-" & _
GetDateTimeForEventQuery(CDate(CStr(Date()) & " 23:59:59")) & """ /v"
.Run "cmd.exe /c """ & strCommand & " >""c:\error.txt""", 1, True
End With
WScript.Quit 0
Function GetDateTimeForEventQuery(dtDateTime)
SetLocale("en-us")
GetDateTimeForEventQuery = FormatDateTime(dtDateTime, vbShortDate) & "," & Replace(FormatDateTime(dtDateTime, vbLongTime), " ", "")
SetLocale("ru")
End Function
Ну, и, напоследок: на мой взгляд, проще самому выполнить запрос к журналам посредством «Win32_NTLogEvent».