xcopy : 복사 대신 파일을 이동 하시겠습니까?


11

xcopyVerify 플래그를 사용하여 네트워크를 통해 파일을 복사하지 않고 이동하는 데 사용 하고 싶습니다 . 파일을 이동하기 위해 xcopy에서 스위치를 찾을 수 없습니다. xmove사용할 수 verify있습니까?

현재 사용하고 xcopy /D /V있지만 파일이 대상으로 성공적으로 복사되었음을 확인했을 때만 소스에서 파일을 제거해야 합니다.


1
당신은 알고 있어야합니다 심지어 사용하여 /v파일이 제대로 기록 된 것을 보장하지 않습니다 : 디스크와 OS가 성공적 최선을 다하고되기 전에 쓰기 캐시 파일이 거기에서 검색 할 것을 의미 캐시합니다. 유일한 안전한 옵션은 나중에 사본을 만들고 확인 및 삭제를 예약하는 것입니다. 경험적으로 5 분이면 충분하지만 하드 규칙과 빠른 규칙은 없습니다. 디스크 활동과 캐시 크기에 따라 다릅니다 (캐시 된 쓰기 오류가 발생한 사람이라고 말합니다).
AFH

답변:


11

당신은 robocopy그것을 확인해야합니다 , 그것은 훨씬 더 강력합니다 xcopy. /MOV또는 로 파일을 쉽게 이동할 수 있습니다 /MOVE.

파일 만 이동하려면 (복사 후 소스에서 삭제)

robocopy from_folder to_folder files_to_copy /MOV

파일 및 디렉토리를 이동하려면 (복사 후 소스에서 삭제)

robocopy from_folder to_folder files_to_copy /MOVE

http://ss64.com/nt/robocopy.html


2
Robocopy는 verify내가 볼 수 있는 한 멀지 않습니다 .
JBurace

@JBurace 링크를 보면 내가 게시 한 링크는 다음과 같습니다 /MOVE : Move files and dirs (delete from source after copying).. 복사하지 않으면 소스를 제거하지 않습니다.
imtheman

2
이동했지만 파일 크기가 일치하지 않으면 어떻게됩니까? 이것이 내가해야 할 이유 verify입니다. robocopy 정보에는 실제로 두 파일 크기가 실제로 이동되지 않았지만 올바르게 이동했는지 확인하기 위해 아무것도 확인하지 못했습니다.
JBurace

@ JBurace 나는 그렇게 작동하지 않는다고 생각합니다. 모든 파일을 복사하지 않으면 아무 것도 복사되지 않은 것처럼 작동하므로 소스를 제거하지 않습니다.
imtheman

1

배치 파일을 사용 Xcopy하여 verify로 명령 을 실행 한 다음 Xcopy에서 반환 된 오류 수준을 확인하여 파일이 성공적으로 복사되었는지 여부를 확인할 수 있습니다. 그럴 경우 소스를 삭제하십시오.

로부터 Xcopy를 문서 :

Exit
code  Description
====  ===========
  0   Files were copied without error.
  1   No files were found to copy.
  2   The user pressed CTRL+C to terminate xcopy.
  4   Initialization error occurred. There is not
      enough memory or disk space, or you entered
      an invalid drive name or invalid syntax on
      the command line.
  5   Disk write error occurred.

배치 예 :

Rem Attempt file copy...
xcopy /D /V %1 %2

Rem Check result code and if it was successful (0), delete the source.
if errorlevel 0 (
    echo Copy completed successfully
    del /Q %1
    exit /B
)

Rem Not Errorlevel 0...
echo Copy failed for some reason.

errorlevel내가하고있는 경우에도 여전히 작동 합니까 dir args && xcopy args >> logfile.txt? 아니면 errorlevel결과 dir일까요?
JBurace

마지막 명령 실행 결과가 포함됩니다. 다음과 같은 간단한 배치 파일로 테스트 할 수 있습니다. pastebin.com/6GwNA7MP
Ƭᴇcʜιᴇ007

if errorlevel 0항상 트리거합니다. 실제로 확인 if errorlevel >= 0중이므로 대신 오류 사례를 확인해야합니다 if errorlevel 1 ( ... failure case ... ) else ( ... success case ... ). 또는 스타일을 선호하는 if not errorlevel 0 (... success case ... )경우 또는 스타일을 선호하는 경우if %ERRORLEVEL% EQU 0 ( ... success case ... )
Jesse Chisholm

물론 이것은 훨씬 덜 효율적일 것입니다 (동일한 하드 드라이브에서 이동이 매우 저렴합니다).
Ohad Schneider
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.