ファイルの名前を変更するために使用されるvbscriptがあります。スクリプトに実装する必要があるのは、「新しいファイル」がすでに存在する場合にそれを削除するものです。
たとえば、次のような名前のファイルのバッチがあります。11111111.dddddddd.pdfファイルの名前が11111111.pdfに変更されます。問題は、11111111.pdf形式に名前を変更すると、重複するファイルで終了し、同じ名前のファイルが2つないためにスクリプトが失敗することです。最初のものの名前を変更する必要がありますが、同じ名前に変更された他のものを削除します。
これが私のIFステートメントでこれまでに得たものですが、機能せず、「タイプの不一致: 'FileExists」というエラーが表示されます。コードのこの部分を希望の方法で実行する方法がわかりません。ヘルプや提案をいただければ幸いです。
dim infolder: set infolder = fso.GetFolder(IN_PATH)
dim file
for each file in infolder.files
dim name: name = file.name
dim parts: parts = split(name, ".")
dim acct_, date_
acct_ = parts(0)
date_ = parts(1)
' file format of a.c.pdf
if UBound(parts) = 2 then
' rebuild the name with the 0th and 2nd elements
dim newname: newname = acct_ & "." & parts(2)
' use the move() method to effect the rename
file.move fso.buildpath(OUT_PATH, newname)
if newname = FileExists(file.name) Then
newname.DeleteFile()
end if
end if
next 'file
もうすぐです。ファイルを削除するだけですbefore上書きしようとしています。
dim infolder: set infolder = fso.GetFolder(IN_PATH)
dim file: for each file in infolder.Files
dim name: name = file.name
dim parts: parts = split(name, ".")
if UBound(parts) = 2 then
' file name like a.c.pdf
dim newname: newname = parts(0) & "." & parts(2)
dim newpath: newpath = fso.BuildPath(OUT_PATH, newname)
' warning:
' if we have source files C:\IN_PATH\ABC.01.PDF, C:\IN_PATH\ABC.02.PDF, ...
' only one of them will be saved as D:\OUT_PATH\ABC.PDF
if fso.FileExists(newpath) then
fso.DeleteFile newpath
end if
file.Move newpath
end if
next
fileExists()
はFileSystemObject
のメソッドであり、グローバルスコープ関数ではありません。
削除にも問題があります。DeleteFile()
もFileSystemObject
のメソッドです。
さらに、ファイルを移動してから、上書きの問題に対処しようとしているようですが、これは順不同です。最初に名前の衝突を検出する必要があるため、ファイルの名前を変更するか、最初に衝突を削除できます。何らかの理由で、最後のファイルに到達するまで新しいファイルを削除し続けたいと思っています。これは、質問に含まれているように思われました。
だからあなたはブロックを使うことができます:
if NOT fso.FileExists(newname) Then
file.move fso.buildpath(OUT_PATH, newname)
else
fso.DeleteFile newname
file.move fso.buildpath(OUT_PATH, newname)
end if
また、=
記号との文字列比較では大文字と小文字が区別されることに注意してください。大文字小文字を区別しない文字列比較には、strCmp
をvbText
比較オプションとともに使用します。
IF both POS_History_bim_data_*.Zip and POS_History_bim_data_*.Zip.trg exists in Y:\ExternalData\RSIDest\ Folder then Delete File Y:\ExternalData\RSIDest\Target_slpos_unzip_done.dat