![덮어쓰지 않고 배치 파일 복사 및 이동](https://rvso.com/image/1400013/%EB%8D%AE%EC%96%B4%EC%93%B0%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%B0%B0%EC%B9%98%20%ED%8C%8C%EC%9D%BC%20%EB%B3%B5%EC%82%AC%20%EB%B0%8F%20%EC%9D%B4%EB%8F%99.png)
대상에 동일한 이름의 파일을 덮어쓰지 않고 단일 파일을 복사한 다음 파일을 이동하고(백그라운드에서 실행하기 위해) 배치 파일을 생성하려고 합니다. 이름이 같은 목적지?
현재 사용하고 있는데 덮어쓰고 있습니다.
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