VB ошибка "требуется объект"
Я получаю ошибку "требуется объект" в строке 54, последней строке, когда я запускаю следующий скрипт. Что случилось?
Option Explicit
Dim cmdString, g_strHostFile, filepath, flexnetpath, importcmd, dtmToday, dtmYesterday, dtmFileDate, param1, param2, param3, i4path, objFSO, objTextStream, g_strComputer, WshShell
'Initialize global constants and variables.
Const FOR_READING = 1
g_strHostFile = "D:dataimportsLUM_servers.txt"
i4path = "C:IFORWINBINi4blt.exe"
filepath = "D:DataImports"
flexnetpath = "C:Program Files (x86)FlexnetManagerAdmin"
importcmd = flexnetpath & "flexnet bulkimport -uadmin -padmin -f" & filepath
dtmToday = Date()
dtmYesterday = Date() - 1
dtmFileDate = Year(Date) & padDate(Month(Date)) & padDate(Day(Date))
param1 = "-r1 -e2,4 -n "
param2 = " -v 'Dassault Systemes' -b "
param3 = " -g "
WScript.Echo "i4Path: " & i4path
WScript.Echo "FilePath: " & filepath
WScript.Echo "flexnetpath: " & flexnetpath
WScript.Echo "importcmd: " & importcmd
WScript.Echo "dtmToday: " & dtmToday
WScript.Echo "dtmYesterday: " & dtmYesterday
WScript.Echo "dtmFileDate: " & dtmFileDate
'Read LUM Server Names from text file.
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(g_strHostFile) Then
Set objTextStream = objFSO.OpenTextFile(g_strHostFile, FOR_READING)
Else
WScript.Echo "Input file " & g_strHostFile & " not found."
WScript.Quit
End If
'Loop through list of computers and perform tasks on each.
Do Until objTextStream.AtEndOfStream
g_strComputer = objTextStream.ReadLine
WScript.Echo "Processing Server: " & g_strComputer
Set cmdString = i4path & param1 & g_strComputer & param2 & dtmYesterday & param3 & dtmToday & filepath & g_strComputer & "_" & dtmFileDate & "_lum.lrl"
WScript.Echo "Processing Command: " & cmdString
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmdString"
Loop
objTextStream.Close
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo "Processing Bulk Import: " & importcmd
WshShell.Run "importcmd"
Function padDate(intNumber)
if intNumber <= 9 Then
padDate = "0" & CStr(intNumber)
Else
padDate = CStr(intNumber)
End If
End Function
2 ответов
есть несколько проблем, я думаю.
importcmd = flexnetpath & "flexnet bulkimport -uadmin -padmin -f" & filepath
вам, вероятно, нужны некоторые пробелы:
importcmd = flexnetpath & " flexnet bulkimport -uadmin -padmin -f " & filepath
Set используется только с объектами, а не строками, поэтому его следует удалить из этой строки:
Set cmdString = i4path & param1 & g_strComputer & param2 & dtmYesterday & param3 & dtmToday & filepath & g_strComputer & "_" & dtmFileDate & "_lum.lrl"
я совершенно уверен, что вы имеете в виду
WshShell.Run importcmd
или
WshShell.Run """" & importcmd & """"
требуемый объект возникает, когда у вас есть оператор, например Set x = y
где x не является типом объекта, а является простым типом (Integer
, Double
, Date
, etc. ). Я думаю, линия
Set cmdString = i4path & param1 & g_strComputer & param2 & ...
вызывает ошибку, и я думаю, что все, что вам нужно сделать, это удалить Set
заявление. Я думаю, что строки не являются Object
и таким образом не нужны Set
заявление.