请,我搜索一个递归 vbs 函数,该函数将文件名作为输入,并在将其保存到文件系统之前检查该文件是否存在于文件夹中。如果它已经存在于文件夹中,那么我们必须增加旧名称。我的目标是通过巧妙地增加下一个相似的文件名来保留相似的旧文件名。
例如,在“D:\test”文件夹中,可能已经存在一个名为“incFile.txt”的文件。要将其保存在“D:\test”中,我们必须首先检查该文件夹是否不存在;如果它已经存在那么我们必须将旧名称增加为“incFile-1.txt”等等。
请看看我做了什么,希望不会打扰你。如果您想帮助我修复我的错误,您可以立即在计算机上复制并运行它,因为您拥有所有信息。
dim readparam,mySavingName,concatene 'global variable
Set fso= CreateObject("Scripting.FileSystemObject")
set objF=fso.opentextfile("fileList.txt",1)
Do Until objF.AtEndOfStream
readparam = objF.readline
saveStrategy readparam
Loop
Sub saveStrategy(aFileName)
dim xmlDoc,objDoc
mySavingName=aFileName
mySavingName=recursion(mySavingName)
concatene="GAME-"&mySavingName
Set xmlDoc=createObject("MSXML2.DOMDocument")
Set oCreation = xmlDoc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
xmlDoc.insertBefore oCreation, xmlDoc.childNodes.Item(0)
Set objDoc = xmlDoc.createElement("Racine")
xmlDoc.appendChild(objDoc)
Set obj = _
xmlDoc.createElement("GAME-PLAY")
obj.Text=aFile
objDoc.appendChild obj
xmlDoc.save(concatene)
'delete object after processing here on each line read from fileList.txt
Set xmlDoc=Nothing
Set oCreation=Nothing
Set objDoc=Nothing
end Sub
function recursion(mySavingName)
dim shift
shift=0
concatene="GAME-"&mySavingName
if fso.FileExists(concatene) Then
shift=shift+1
mySavingName=mySavingName&shift
nextSavingName=recursion(mySavingName)
Else
nextSavingName=mySavingName
End If
recursion=nextSavingName
end function
fileList.txt 'The inputs are the file names (inside the same folder as the .vbs program file)
konan
batman
casper
batman
Output Expected
GAME-konan
GAME-batman
GAME-casper
GAME-batman-1
Output Get with my code
GAME-
我运行这个程序时提示命令没有错误。但是我的程序的结果与预期的结果不同。请如果您有任何问题,请不要犹豫,非常感谢您的关注和帮助。