web-dev-qa-db-ja.com

vbscriptのDestinationのファイルを上書きするMoveFileメソッドの問題?

ソースディレクトリから宛先ディレクトリにファイルを移動するために記述したvbscriptがあります。現時点でスクリプトが機能する方法は、読み込まれたマッピングファイルがあることです(idをフォルダータイプにマップします)。移動される各ファイルはIDで始まり、宛先はIDのマッピング先に基づきます。マッピングファイルを読み取り、移動する各ファイルの宛先パスを作成します。これはすべて期待どおりに機能します。問題は、宛先ディレクトリにすでに存在するファイルを移動しようとすると、ファイルがソースディレクトリから移動されないことです。基本的に、宛先ディレクトリ内のファイルが既に存在する場合、それを上書きしたいと思います。現時点では、私の主なコマンドは次のとおりです。

fso.MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name

デフォルトのファイルが既に存在する場合は、常にこれをデフォルトのディレクトリに上書きする方法はありますか?

15
user1587060

残念ながら、VBScript MoveFileメソッドは、ターゲットファイルが存在しない場合にのみ機能します。そのようなファイルが存在する場合は上書きできません。エラーをスローするだけです。

したがって、唯一のオプションは、CopyFile(上書きするオプションがあります)を使用してからDeleteFileを使用することです。

fso.CopyFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name, True
fso.DeleteFile ObjFile.Path
28
Shadow Wizard

前述のように、MoveFileは既存のファイルを上書きできません。ただし、独自の関数を作成できます。

Function MoveFile(source, target)
  Dim fso
  Set fso = CreateObject("Scripting.FileSystemObject")

  fso.CopyFile source, target, True
  fso.DeleteFile source
End Function

そして、次のように呼び出します:

MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name
0
Stefan