Vbscript VB错误“;“所需对象”;

Vbscript VB错误“;“所需对象”;,vbscript,Vbscript,当我运行下面的脚本时,第54行(最后一行)出现“objectrequired”错误。怎么了 Option Explicit Dim cmdString, g_strHostFile, filepath, flexnetpath, importcmd, dtmToday, dtmYesterday, dtmFileDate, param1, param2, param3, i4path, objFSO, objTextStream, g_strComputer, WshShell 'Initia

当我运行下面的脚本时,第54行(最后一行)出现“objectrequired”错误。怎么了

 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:\dataimports\LUM_servers.txt"
i4path = "C:\IFOR\WIN\BIN\i4blt.exe"
filepath = "D:\DataImports\"
flexnetpath = "C:\Program Files (x86)\Flexnet\Manager\Admin"
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
选项显式
Dim cmdString、g_strHostFile、filepath、flexnetpath、importcmd、dtmToday、DTMyestDay、dtmFileDate、param1、param2、param3、i4path、objFSO、objTextStream、g_strComputer、WshShell
'初始化全局常量和变量。
_读数的常数=1
g\u strHostFile=“D:\dataimports\LUM\u servers.txt”
i4path=“C:\IFOR\WIN\BIN\i4blt.exe”
filepath=“D:\DataImports\”
flexnetpath=“C:\ProgramFiles(x86)\Flexnet\Manager\Admin”
importcmd=flexnetpath&“flexnet bulkimport-uadmin-padmin-f”和filepath
dtmToday=日期()
dtmYesterday=日期()-1
dtmFileDate=年(日)和月(日)和日(日))
param1=“-r1-e2,4-n”
param2=“-v‘达索系统’-b”
param3=“-g”
Echo“i4Path:&i4Path
Echo“FilePath:&FilePath
Echo“flexnetpath:&flexnetpath
Echo“importcmd:&importcmd
Echo“dtmToday:&dtmToday
Echo“dtmYesterday:&dtmYesterday
Echo“dtmFileDate:&dtmFileDate
'从文本文件读取LUM服务器名称。
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
如果objFSO.files存在(g_strHostFile),则
设置objTextStream=objFSO.OpenTextFile(g_strHostFile,用于_读取)
其他的
Echo“输入文件”&g_strHostFile&“未找到”
WScript.Quit
如果结束
'循环浏览计算机列表并在每个计算机上执行任务。
直到objTextStream.AtEndOfStream
g_strComputer=objTextStream.ReadLine
Echo“处理服务器:&g_strComputer”
Set cmdString=i4path¶m1&g_strComputer¶m2&dtmYesterday¶m3&dtmToday&filepath&g_strComputer&“&dtmFileDate&”lum.lrl”
WScript.Echo“处理命令:”&cmdString
设置WshShell=WScript.CreateObject(“WScript.Shell”)
WshShell.Run“cmdString”
环
objTextStream,关闭
设置WshShell=WScript.CreateObject(“WScript.Shell”)
Echo“正在处理批量导入:&importcmd
WshShell.Run“importcmd”
函数padDate(intNumber)

如果intNumber有一些问题,我想

 importcmd = flexnetpath & "flexnet bulkimport -uadmin -padmin -f" & filepath
您可能需要一些空间:

 importcmd = flexnetpath & " flexnet bulkimport -uadmin -padmin -f " & filepath
集合仅用于对象,而不用于字符串,因此应从此行中删除它:

 Set cmdString = i4path & param1 & g_strComputer & param2 & dtmYesterday & param3 & dtmToday & filepath & g_strComputer & "_" & dtmFileDate & "_lum.lrl"
我相当肯定你的意思是

 WshShell.Run importcmd


当您有一个类似于
Set x=y
的语句时,会引发所需对象,其中x不是对象类型,而是简单类型(
Integer
Double
Date
等)。我想这条线

Set cmdString = i4path & param1 & g_strComputer & param2 & ...

是导致错误的原因,我认为您所要做的就是删除
Set
语句。我认为字符串不是从
Object
派生的,因此不需要
Set
语句。

您是在哪一行收到此错误的?您知道错误是在哪里产生的吗?您是否可以将
WScript.Echo
MsgBox
与一些文本一起使用,以便缩小代码中发生错误的区域。
Set cmdString = i4path & param1 & g_strComputer & param2 & ...