J'ai un vbscript que j'ai écrit pour déplacer des fichiers d'un répertoire source vers un répertoire de destination. La façon dont le script fonctionne pour le moment est que j'ai un fichier de mappage qui est lu (identifiant de carte pour le type de dossier). Chaque fichier en cours de déplacement commence par l'id et la destination est basée sur le mappage de l'id. Je lis dans le fichier de mappage et construis le chemin de destination pour chaque fichier déplacé. Tout cela fonctionne comme prévu. Le problème est que lorsque je tente de déplacer un fichier qui existe déjà dans le répertoire de destination, les fichiers ne sont pas déplacés du répertoire source. En gros, j'aimerais qu'il écrase un fichier dans le répertoire de destination s'il existe déjà . Pour le moment, ma commande principale est la suivante:
fso.MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name
Existe-t-il un moyen par défaut de toujours écraser un fichier du répertoire de destination, s'il existe déjà?
Malheureusement, la méthode VBScript MoveFile
ne fonctionne que lorsque le fichier cible n'existe pas. Il ne peut pas écraser un tel fichier lorsqu'il existe, jetez simplement une erreur.
Donc, la seule option est d'utiliser CopyFile (qui a l'option d'écraser) puis DeleteFile:
fso.CopyFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name, True
fso.DeleteFile ObjFile.Path
Comme mentionné précédemment, MoveFile ne peut pas écraser le fichier existant . Mais vous pouvez créer votre propre fonction:
Function MoveFile(source, target)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile source, target, True
fso.DeleteFile source
End Function
Et puis appelez comme ça:
MoveFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name