ファイル名を入力として取り、ファイルシステムに保存する前に、このファイルがフォルダーに存在するかどうかを確認する再帰的な 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-
プロンプトコマンドからエラーなしでこのプログラムを実行します。しかし、私のプログラムの結果は、期待される結果とは異なります。ご不明な点がございましたら、お気軽にお問い合わせください。ご理解とご協力をよろしくお願いいたします。