Chciałbym użyć xcopy
do przenoszenia, a nie kopiowania plików w sieci z flagą Verify. Nie mogłem znaleźć przełącznika na Xcopy do przenoszenia plików, czy xmove
mogę go użyć verify
?
W tej chwili używam, xcopy /D /V
ale muszę pozbyć się plików u źródła tylko po zweryfikowaniu, że plik został pomyślnie skopiowany do miejsca docelowego.
/v
nie gwarantuje, że plik został poprawnie zapisany: pamięć podręczna dysku i systemu operacyjnego oznacza, że plik w pamięci podręcznej zapisu zostanie pobrany z niego przed pomyślnym zatwierdzeniem. Jedyną bezpieczną opcją jest wykonanie kopii i zaplanowanie weryfikacji i usunięcia w przyszłości. Heurystycznie powiedziałbym, że wystarczy 5 minut, ale nie ma twardej i szybkiej reguły: zależy to od aktywności dysku i wielkości pamięci podręcznej (mówię jako ten, który napotkał błędy zapisu w pamięci podręcznej).Odpowiedzi:
Powinieneś się
robocopy
przekonać, jest o wiele potężniejszy niżxcopy
. Możesz łatwo przenosić pliki za pomocą/MOV
lub/MOVE
.Aby przenieść tylko pliki (usuń ze źródła po skopiowaniu)
Aby przenieść pliki i katalogi (usuń ze źródła po skopiowaniu)
http://ss64.com/nt/robocopy.html
źródło
verify
tak daleko, jak widzę./MOVE : Move files and dirs (delete from source after copying)
. Jeśli się nie skopiuje, nie usunie źródła.verify
. Nie widzę nic w informacjach o robocopy, które faktycznie weryfikują dwa rozmiary plików, aby upewnić się, że nie tylko zostały przeniesione, ale zostały poprawnie przeniesione.Możesz użyć pliku wsadowego, aby uruchomić
Xcopy
polecenie z weryfikacją, a następnie sprawdzić poziom błędu zwrócony przez Xcopy, aby ustalić, czy pliki zostały pomyślnie skopiowane, czy nie. Jeśli tak, usuń źródło.Z dokumentacji Xcopy :
Przykładowa partia:
źródło
errorlevel
nadal działać, jeśli robię:dir args && xcopy args >> logfile.txt
? Czy będzieerrorlevel
wynikiemdir
?if errorlevel 0
ZAWSZE uruchamia się. Ponieważ tak naprawdę sprawdzaif errorlevel >= 0
, powinieneś zamiast tego sprawdzić przypadek błęduif errorlevel 1 ( ... failure case ... ) else ( ... success case ... )
. Lub, jeśli wolisz stylif not errorlevel 0 (... success case ... )
Lub, jeśli wolisz stylif %ERRORLEVEL% EQU 0 ( ... success case ... )