我有一个充满XML档案的目录。 类似400 XML的东西,我需要使用VBScript将它们中的每一个重命名为它们。
我已经完成了一些功能正常但仍有问题的代码:
@EDIT - >解决了。我找到了“替换”功能。谢谢,Ekkehard!
以下是代码:
Dim Caminho
Dim FSO
Dim FLD
Dim fil
Dim nomeErrado
Dim nomeCerto
Dim xmlDoc
Dim OrganisationInfo, Operadora, recentDate, 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") 'Create the instance of the FSO
Set FLD = FSO.GetFolder(Caminho) 'Set the folder you want to search. NOTE - some antivirus may not like this
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, "/", "-")
nomeCerto = "IR21 - " & resultOperadora & " - " & ".xml"
WScript.Echo "_" & nomeErrado & "_" & vbNewLine & "_" & nomeCerto & "_"
FSO.MoveFile nomeErrado, nomeCerto
End If
End If
Next
Set FLD = Nothing
Set FSO = Nothing
答案 0 :(得分:2)
下次请非正确地识别问题/错误:错误编号,错误说明,行(不是数字,而是通过引用来源)。
如果32是正确的行号,那么
FSO.MoveFile nomeErrado, nomeCerto
应该受到指责。最相似的原因是:名为nomeCerto的文件已经存在。一种补救措施可能是:检查目标文件是否存在,如果是,则在名称后附加一个数字。另一个:检查你的XPath是否失败(和Operadora是'重用'),如果是这样,请记录这个事实并且不要重命名该文件。
<强>更新强>
我尝试使用导致.MoveFile抛出“找不到路径错误”的方案。当你遍历.Files集合并使用文件'.Path来指定.MoveFile的源时,很难看到如何找不到源路径。同样适用于目标路径:您或FSO的默认值是否指定移动文件的位置 - 如果某些文件的操作成功,那么也应该找到讨厌目的地的路径。
我的第一步是获取一些成功和一些失败(源)文件的列表。是否存在明显的不良特征 - 如有趣的字母( - &gt;编码)或属性( - &gt;权限)?
然后我会使用MsgBox和分隔符显示变量nomeCerto的内容(对于讨厌的文件) - 例如。
MsgBox "|" & nomeCerto & "|"
也许Operadora包含使nomeCerto非法的材料(空白,\,/,使用你自己的想象力)。
答案 1 :(得分:0)
将您的移动文件行更改为此内容;
FSO.moveFile nomeErrado & "/" & fil.Name, nomeErrado & "/" & nomeCerto