使用MoveFile方法覆盖vbscript中Destination中的文件问题?

use*_*060 15 vbscript file-io fso

我有一个用于将文件从源目录移动到目标目录的vbscript.目前脚本的工作方式是我有一个读入的映射文件(将id映射到文件夹类型).移动的每个文件都以id开头,目标将基于id映射到的内容.我读入映射文件并为每个要移动的文件构建目标路径.这一切都按预期工作,问题是当我尝试移动目标目录中已存在的文件时,文件不会从源目录移动.基本上我希望它覆盖目标目录中的文件(如果它已经存在).目前,我的主要命令是:

fso.MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name
Run Code Online (Sandbox Code Playgroud)

有没有办法将此默认设置为始终覆盖destionation目录中的文件(如果已存在)?

Sha*_*ard 29

不幸的是,VBScript MoveFile方法仅在目标文件不存在时才起作用.它存在时不能覆盖这样的文件,只是抛出错误.

所以唯一的选择是使用CopyFile(它有覆盖选项)然后使用DeleteFile:

fso.CopyFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name, True
fso.DeleteFile ObjFile.Path
Run Code Online (Sandbox Code Playgroud)

  • @ user1587060我的猜测是`MoveFile`是为了重命名文件而创建的; 重命名目标不得存在.他们从不打扰改变这种逻辑.:/ (2认同)

Ste*_*fan 5

如前所述,MoveFile 无法覆盖现有文件。但您可以创建自己的函数:

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

  fso.CopyFile source, target, True
  fso.DeleteFile source
End Function
Run Code Online (Sandbox Code Playgroud)

然后这样称呼它:

MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name
Run Code Online (Sandbox Code Playgroud)