XCopy에서 파일/디렉터리 확인 질문 없애기
그러고 보니, 제가 가끔은 DOS 명령어에 대해서 글을 쓰기도 하는군요. ^^
batch 파일에서 실행한 exe에서 batch 실행 문맥의 환경 변수 설정
; https://www.sysnet.pe.kr/2/0/238
배치(batch) 파일에서 또 다른 배치 파일을 동기 방식으로 실행 및 반환값 얻기
; https://www.sysnet.pe.kr/2/0/958
DOS batch - 동기 방식으로 원격 서비스 제어
; https://www.sysnet.pe.kr/2/0/989
오늘은, xcopy에 대해서입니다. 대개의 경우,
robocopy를 사용하는데 기본적으로 Windows Server XP/2003에는 설치되어 있지 않아서 일반적인 배치 파일의 명령어로 사용하기에는 무리일 때도 있습니다.
어쩔 수 없이, xcopy를 이용한 파일 복사를 해야 하는데, 아쉬운 것은 최초 복사에서 꼭 '파일'인지 '디렉터리'인지 물어본다는 단점이 있습니다.
D:\Debug>xcopy .\test.exe c:\target\test.exe
Does C:\target\test.exe specify a file name
or directory name on the target
(F = file, D = directory)?
이유는 알 수 없지만, 이에 대한 질문을 못하도록 막는 방법이 xcopy에는 제공되지 않습니다.
검색을 해보니, 우회방법이 있긴 합니다.
xcopy Not Surpressing File/Directory Query
; http://superuser.com/questions/34303/xcopy-not-surpressing-file-directory-query
위의 글에서는, echo 명령어를 파이프로 조합해서 해결하는 것을 소개하고 있는데요. 그래서 다음과 같이 명령어를 연결해 주면 파일/폴더 질문 없이 곧바로 실행이 됩니다.
D:\Debug>echo F | xcopy .\test.exe c:\target\test.exe
.\test.exe
1 File(s) copied
하지만, 위의 댓글에서도 문제가 지적되고 있지만 다국어 환경에서 파일에 대해 꼭 'F'로 대응되지는 않기 때문에 자칫 의도하지 않는 결과를 낳을 수 있는 문제가 있습니다.
그냥 md 명령과 copy 명령의 조합으로 해결할까도 생각해봤지만, 어쨌든 파일이 복사될 대상 폴더를 자동으로 생성해 준다는 것은 꽤나 매력적인 요소가 아닐 수 없습니다.
포기하지 않고 ^^ 이것저것 만져 보니, 나름 우회 방법을 하나 찾아냈습니다. 즉, '파일'이라는 것을 인식할 수 있도록 와일드 카드 문자를 대상 경로에 지정하는 것입니다.
즉, 다음과 같이 해주면 됩니다.
D:\Debug>xcopy .\test.exe c:\target\test.*
.\test.exe
1 File(s) copied
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]