덮어쓰지 않고 배치 파일 복사 및 이동

덮어쓰지 않고 배치 파일 복사 및 이동

대상에 동일한 이름의 파일을 덮어쓰지 않고 단일 파일을 복사한 다음 파일을 이동하고(백그라운드에서 실행하기 위해) 배치 파일을 생성하려고 합니다. 이름이 같은 목적지?

현재 사용하고 있는데 덮어쓰고 있습니다.

copy %1 dest
move %1 dest

답변1

이것을 시도하십시오. 단일 파일에서 작동합니다.

에코 N | 복사 /-Y 파일1 파일2

에코 N | 이동 /-Y 파일1 파일2

흥미롭게도 와일드카드에서도 작동하는 것 같습니다. x64 Windows 7에서 테스트했습니다.

답변2

방금 복사한 동일한 파일을 이동한다는 것이 무엇을 의미하는지 명확하지 않지만 파일이 존재하는지 테스트하려면 다음과 같은 배치 스크립트에서 "IF" 문을 사용합니다. (%~에 대해서는 아래에서 자세히 설명하겠습니다.)

IF EXIST %~dp2%~nx1 (echo file exists) ELSE (
robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV>>testing.txt)

다음은 Windows 7, Windows 8, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012에서 작동합니다.

(XP의 경우 리소스 키트에서 가져와야 하지만 해당 보석의 수명은 30일밖에 남지 않았습니다 :))

다음 코드는 대상 파일이 존재하지 않는 경우에만 소스 디렉터리의 파일을 대상 디렉터리로 복사합니다.

robocopy source_path dest_path filename /XN /XO

/MOV를 추가하면 파일이 이동됩니다.

매개변수를 사용하려는 경우 명령은 다음과 같습니다.

copyscript.bat C:\Dir1\filename.ext D:\path2\

copyscript.bat를 보면 다음과 같습니다.

robocopy %~dp1 %~dp2 %~nx1 /XN /XO

출력을 로그로 보내려면 다음과 같이 >>logfile.txt를 추가하십시오.

robocopy %~dp1 %~dp2 %~nx1 /XN /XO>>logfile.txt 

복사하는 대신 파일을 이동하려면 다음과 같이 하십시오.

robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV 
  • %~dp1은 첫 번째 매개변수의 디렉터리 및 경로와 동일합니다.
  • %~dp2는 두 번째 매개변수의 디렉터리 및 경로와 동일합니다.
  • %~nx1은 첫 번째 매개변수의 파일 이름 및 확장자와 동일합니다.
  • /XN 복사 중에 최신 파일을 제외합니다.
  • /XO 복사 중에 이전 파일을 제외합니다.
  • /MOV 단순히 복사하는 대신 파일을 이동합니다.
  • cmd 창 대신 파일에 출력 결과를 추가합니다(매번 로그를 덮어쓰려면 > 하나만 사용).

  • 기본적으로 robocopy는 날짜 타임스탬프가 동일한 경우 파일을 덮어쓰지 않습니다.

Simon Sheppard의 사이트는 좋은 배치 스크립트 리소스이며 인수 구문은 여기에 있습니다. http://ss64.com/nt/syntax-args.html

Microsoft의 robocopy 정보는 여기에 있습니다.http://technet.microsoft.com/en-us/library/cc733145.aspx

관련 정보