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?
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
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