2013-06-12 16 views
12

Mam vbscript, który napisałem, aby przenieść pliki z katalogu źródłowego do katalogu docelowego. Obecnie skrypt działa w taki sposób, że mam plik mapujący, który jest odczytywany (map id jest typu folderu). Każdy przesyłany plik rozpoczyna się od identyfikatora, a miejsce docelowe będzie oparte na tym, do którego identyfikatora jest przypisany. W pliku odwzorowań odczytywam ścieżkę docelową dla każdego przenoszonego pliku. Wszystko działa zgodnie z oczekiwaniami, problem polega na tym, że próbuję przenieść plik, który już istnieje w katalogu docelowym, pliki nie są przenoszone z katalogu źródłowego. Zasadniczo chciałbym, aby nadpisał plik w katalogu docelowym, jeśli już istnieje. W tej chwili moim głównym polecenia jest następująca:Problem z metodą MoveFile do nadpisania pliku w miejscu docelowym w vbscript?

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

Czy istnieje sposób na to, aby zawsze domyślnie zastąpić plik w katalogu jw jeśli już istnieje?

Odpowiedz

20

Niestety, metoda VBScript MoveFile działa tylko wtedy, gdy docelowy plik nie istnieje. Nie może zastąpić takiego pliku, gdy istnieje, po prostu wyślij błąd.

więc jedyną opcją jest użycie CopyFile (który ma możliwość nadpisania) następnie DeleteFile:

fso.CopyFile ObjFile.Path, archiveTo & "\" & yearValue & "\" & monthValue & "\" & ObjFile.Name, True 
fso.DeleteFile ObjFile.Path 
+0

To świetnie - dzięki za info. Wiedziałem, że mogę to zrobić - po prostu nie wiedziałem, czy istnieje skuteczniejszy sposób, w jaki mogę to zrobić za pomocą polecenia Przenieś. – user1587060

+0

@ user1587060 Nie, ta konkretna metoda nigdy nie była przeznaczona do takiego użytku. :) –

+0

To wydaje się dziwne, że metoda kopiowania będzie miała opcję nadpisania, ale ruch nie będzie. W każdym razie, przynajmniej wiem teraz, – user1587060