我在文件夹\\demo.US\Modified\
中有一些XML文件。文件夹中的文件为:
USA.xml Canada.xml Mexico.xml
以下代码将编码从UTF-8更改为Windows-1252,并创建了修改后的文件mod.xml
。
此mod.xml
文件具有来自所有三个XML文件的数据并置。
我需要帮助,因此可以分别保存文件。
如果objFile.Name
的值为USA.xml
,则应将修改后的文件名另存为USA_mod.xml
。执行完成后,\\demo.US\Modified\
文件夹的输出应包含以下mod文件。
USA.xml Canada.xml Mexico.xml USA_mod.xml Canada_mod.xml Mexico_mod.xml
我使用的代码如下。
Set objFSO = CreateObject("Scripting.FileSystemObject")
objStartFolder = "\\demo.US\Modified\"
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile In colFiles
WScript.Echo objFile.Name
Set objFile = objFSO.OpenTextFile(objStartFolder & objFile.Name, 1)
Set outFile = objFSO.OpenTextFile(objStartFolder & "mod.xml", 2, True)
Do Until objFile.AtEndOfStream
strContent = strContent & objFile.ReadLine
Loop
MsgBox strContent
strContent = Replace(strContent, "encoding=""UTF-8""", "encoding=""windows-1252""")
outFile.WriteLine strContent
outFile.Close
objFile.Close
Next
答案 0 :(得分:1)
正如其他人已经指出的那样,您不应该在这里做您想做的事情,因为它很可能在以后制造更多的问题。查找问题的原因并解决问题,而不是尝试处理症状。您已被警告。
话虽如此,所有输入文件的内容都写入同一输出文件的原因是,您始终指定相同的输出文件。不过,该文件应仅包含最后一个输入文件的内容,因为打开文件是为了写入(因此擦除了先前的内容),而不是附加文件。
替换这些行:
Set objFile = objFSO.OpenTextFile(objStartFolder & objFile.Name, 1)
Set outFile = objFSO.OpenTextFile(objStartFolder & "mod.xml", 2, True)
与此:
Set inFile = objFile.OpenAsTextStream
outFilename = objFSO.BuildPath(objStartFolder, objFSO.GetBaseName(objFile) & "_mod.xml")
Set outFile = objFSO.OpenTextFile(outFilename, 2, True)
,然后用objFile
替换其他inFile
出现的地方(始终避免更改循环变量的值),并且代码应该执行您期望的操作它要做。但是再次提醒您,输出可能不是有效的XML。
答案 1 :(得分:0)
我设法使其正常工作,下面是我使用的代码
Dim objFSO, filePath, objFile, colFiles, s , FName
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set filePath = objFSO.GetFolder("\\demo.US\Modified\")
Set colFiles = filePath.Files
For Each FName in colFiles
set objFile = objFSO.OpenTextFile(FName.Path,1)
set outFile = objFSO.OpenTextFile(LEFT(FName.Path,instr(FName.Path,".xml")-1) &"_mod.xml",2,True)
do until objFile.AtEndOfStream
strContent=objFile.ReadLine
Loop
strContent = Replace(strContent, "encoding=""UTF-8""", "encoding=""windows-1252""")
outFile.WriteLine strContent
outFile.Close
objFile.Close
Next