web-dev-qa-db-fra.com

Problème avec la méthode MoveFile pour remplacer le fichier dans Destination dans vbscript?

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

14
user1587060

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
25
Shadow Wizard

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
0
Stefan