web-dev-qa-db-de.com

Problem mit der MoveFile-Methode zum Überschreiben der Datei in Destination in vbscript?

Ich habe ein VBScript, das ich geschrieben habe, um Dateien aus einem Quellverzeichnis in ein Zielverzeichnis zu verschieben. Das Skript funktioniert im Moment so, dass ich eine Mapping-Datei habe, die eingelesen wird (ordnet die IDs dem Ordnertyp zu). Jede Datei, die verschoben wird, beginnt mit der ID, und das Ziel hängt davon ab, was der ID zugeordnet ist. Ich habe die Zuordnungsdatei eingelesen und den Zielpfad für jede zu verschiebende Datei aufgebaut. Dies funktioniert alles wie erwartet. Wenn ich versuche, eine bereits im Zielverzeichnis vorhandene Datei zu verschieben, werden die Dateien nicht aus dem Quellverzeichnis verschoben. Grundsätzlich möchte ich, dass eine Datei im Zielverzeichnis überschrieben wird, wenn sie bereits vorhanden ist . Im Moment lautet mein Hauptbefehl:

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

Gibt es eine Möglichkeit, dies standardmäßig festzulegen, um eine Datei im Zielverzeichnis immer zu überschreiben, wenn sie bereits existiert?

14
user1587060

Leider funktioniert die VBScript-Methode MoveFile nur, wenn die Zieldatei nicht vorhanden ist. Sie kann eine solche Datei nicht überschreiben, wenn sie existiert, werfen Sie einfach einen Fehler.

Die einzige Option ist also die Verwendung von CopyFile (die Option zum Überschreiben hat) und dann DeleteFile:

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

Wie bereits erwähnt, kann MoveFile die vorhandene Datei nicht überschreiben. Sie können jedoch eine eigene Funktion erstellen:

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

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

Und dann nennen Sie es wie:

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