我有一个VBScript,它根据这些XML上的节点值重命名目录中的XML文件。
需要使用“Operadora”名称和“Date”重命名这些文件。 “Operadora”是一个唯一的节点,但我的XML上有几个“Date”节点,所以我需要将最新的“Date”作为文件名的一部分。 StackOverflow中的一位朋友帮我找到了一种方法来处理一个存档,但是当它要读取多个文件时,我遇到了一个错误。
重命名第一个文件后,我在“nomeCerto = ...”行中出现“需要对象”错误。我几乎可以肯定这个“Set recentDate = Nothing”是错的,但我找不到改变它的东西。当“recentDate.Text”被取出时,代码可以正常工作。
遵循该计划:
Dim Caminho
Dim FSO
Dim FLD
Dim fil
Dim nomeErrado
Dim nomeCerto
Dim xmlDoc
Dim OrganisationInfo, Operadora, recentDate, contador, resultOperadora
Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") 'Msxml2.DOMDocument / Microsoft.XMLDOM
xmlDoc.Async = "False"
xmlDoc.setProperty "SelectionLanguage", "XPath"
Caminho = "C:\Users\f8057612\Desktop\Bancos\Script_Operadoras"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FLD = FSO.GetFolder(Caminho)
contador = 1
For Each fil in FLD.Files
If LCase(FSO.GetExtensionName(fil)) = "xml" Then
xmlDoc.Load fil.Path
nomeErrado = fil.Path
If xmlDoc.ParseError = 0 Then
For Each OrganisationInfo In xmlDoc.SelectNodes("//OrganisationInfo/OrganisationName")
Operadora = OrganisationInfo.Text
Next
resultOperadora = Replace(Operadora, "/", "-")
Set recentDate = Nothing
For Each node In xmlDoc.SelectNodes("//NetworkData/RoutingInfoSection/ChangeHistory/ChangeHistoryItem/Date")
If recentDate Is Nothing Then
Set recentDate = node
ElseIf node.Text > recentDate.Text Then
Set recentDate = node
End If
Next
nomeCerto = "IR21 - " & resultOperadora & " - " & contador & " - " & recentDate.Text & ".xml" ' " - " & recentDate.Text &
'WScript.Echo "_" & nomeErrado & "_" & vbNewLine & "_" & nomeCerto & "_"
FSO.MoveFile nomeErrado, nomeCerto
contador = contador + 1
resultOperadora = ""
End If
End If
Next
Set FLD = Nothing
Set FSO = Nothing
有人可以帮帮我吗?
答案 0 :(得分:0)
检查recentDate
:
WScript.Echo TypeName(recentDate)
发生错误时最有可能Nothing
。
如果您在行中出现Object required
错误
nomeCerto = "IR21 - " & resultOperadora & " - " & contador & " - " _
& recentDate.Text & ".xml"
唯一可能的原因(AFAICS)是recentDate
不是对象。原因可能是xmlDoc.SelectNodes("//NetworkData/RoutingInfoSection/ChangeHistory/ChangeHistoryItem/Date")
在XML文档中找不到任何匹配的节点。仔细检查您当时正在处理的文件的内容。
您可以通过添加以下支票来缓解错误:
If recentDate Is Nothing Then
nomeCerto = ...
FSO.MoveFile nomeErrado, nomeCerto
End If