2011-10-04 2 views
1

내 요구 사항은 두 폴더의 파일을 비교하는 배치 스크립트를 작성하는 것입니다. SourceFolder와 TargetFolder에 파일이있는 경우 TargetFolder의 파일을 SourceFolder의 파일로 덮어 씁니다.배치 : 포함 및 제외 조건이 충족되는 파일 복사

A가와 문 내가이 달성 할 수있는 경우 문 사용 : '. 접두사'유일한로 시작하는 파일을 복사 할 추가 요구 사항이지만

for /R %Source% %%G in (Prefix.*.ext) do (
    if exist %Target%%%~nxG (
     del %%G 
     copy %Target%%%~nxG %Source% 
    ) 
) 

을 '.ext'로 끝나고 'exclude'라는 단어가 포함 된 모든 파일을 제외하십시오.

영어 : '접두어'로 시작하고 '.ext'로 끝나는 원본 폴더의 모든 파일을 복사하고 '제외'텍스트가 포함되어 있지 않습니다. 대상 폴더에 이미 있습니다.

여기가 내가 붙어 있습니다. 누구든지 일괄 처리하는 방법을 알고 있습니까?

+1

이 질문에 대한 내 해결책을 살펴보십시오. 아마도 당신은 아마 같은 접근법을 적용 할 수있을 것 같아요. http://stackoverflow.com/questions/7651406/copy-a-set-of-files-into-specific-directory-based-on-filename/7651629#7651629 –

+0

@CareyGregory : 귀하의 답변을 살펴 보았습니다. 다른 질문과 나는 그것이 어떻게 도울 수 있는지 안다. 파일에 여러 개의 '.'이 포함되지 않는다고 가정하면 잠재적으로 도움이 될 수 있습니다. –

+0

나는 Carey가 당신의 질문에 대답하고 있다고 생각합니다.본질적으로 포함될 파일에 대해 'FOR'으로 반복하고 'IF'조건으로 검사하여 제외 할 파일을 필터링해야합니다. 어쩌면 당신은 그것을 시도하고, 당신을 위해 작동하지 않는 것에 대한보다 상세한 질문으로 되돌아 가야 할 것입니다. –

답변

4

이 경우 xcopy을 사용할 수 있습니다. 먼저, Prefix와 ext를 실제 문자열이라고 가정하고 대신 변수를 사용하려면 %Prefix%과 같은 문자열을 감싸 야합니다.

둘째, 새 텍스트 파일을 만들어야합니다. 이름을 excludes.txt으로 지정하고 배치 파일과 동일한 디렉토리에 배치하십시오. (배치 파일을 만들고 싶지 않으면 명령을 실행할 때 활성화 된 디렉토리에 배치 파일을 넣으십시오). 이 파일의 유일한 내용은 따옴표가없는 EXCLUDE 문자열이거나 다른 마크 업이어야합니다.

좋아, 명령 자체 :

xcopy %Source%\Prefix.*.ext %Target% /U /EXCLUDE:excludes.txt 

그것을 무너 뜨리는 :

  1. %Source%\Prefix.*.ext는 접두어로 시작하고 .ext를
  2. %Target% 지정으로 끝나는 소스 폴더에있는 파일을 선택합니다 파일의 대상
  3. /U 대상 디렉터리에 이미있는 파일 만 복사하십시오.
  4. /EXCLUDE:excludes.txtexcludes.txt으로 표시되며 excludes.txt 파일의 일부와 일치하는 파일은 제외됩니다.

그게 전부 야! 중첩 된 IF로 FOR 문을 작성하는 것보다 쉽습니다.

+0

제외 파일을 만드는 다른 방법 중 하나는 배치 파일에서 수행하는 것입니다. 파일 시작 부분에서'echo EXCLUDE> C : \ excludes.txt'를 호출 한 다음'/ EXCLUDES : C : \ excludes.txt'. 모든 것을 계속 유지하려면 파일을 미리 만드는 것보다 쉽습니다. – Andrew

0

this SO question을 읽은 후, 나는 이렇게했습니다. (질문에 대한 답변이 도착하기 전에) 내가 원하지 않는 것 내가 그것을 도울 수 있다면 파일을 생성 (제거)해야 할 비록

pushd %Target% 
attrib +h *Exclude 
for /R %%G in (Prefix.*.ext) do (
    if exist %Target%%%~nxG (
     del %%G 
     copy %Target%%%~nxG 
    ) 
) 
attrib -h *Exclude 
popd 

XCOPY 솔루션은 아마 더 나은 보인다.

관련 문제