2014-07-21 2 views
0

두 개의 디렉터리로 분할해야합니다. 즉 특정 파일과 하위 디렉터리를 새 디렉터리로 재배치해야합니다.디렉터리 분할

두 개의 목록이 있습니다. A-> 원본 디렉토리에 보관할 파일 및 하위 디렉토리 목록.

B-> 새 디렉토리로 재배치 될 파일 및 하위 디렉토리 목록.

재배치를하기 전에이 두리스트가 모두 원래 디렉토리의 모든 파일과 하위 디렉토리를 포함하고 있는지 확인하고 싶습니다.

이 확인 스크립트를 작성하는 데 필요한 논리를 파악할 수 없습니다.

누군가 내가이 문제를 어떻게 해결할 수 있는지 제안 해 주시겠습니까?

+0

그 목록을 파일에 쓰고,'sort'로 정렬하고, 그 디렉토리의 정렬 된 파일 목록 ('dir/b/o : n')과 비교하려고합니까? 그들은 일치해야합니다. –

+0

본질적으로 그것은 쉽습니다 - 그러나 그것은 당신의 파일에 무엇이 있는지에 달려 있습니다. 모든 줄에'd : \ folder \ file.ext'? – foxidrive

+0

문제는 내 목록에 없습니다. 모든 행에 d : \ folder \ file.ext가 없습니다. 재배치 될 폴더도 나열되어 있습니다. 모든 폴더와 파일이 있는지 확인하고 싶습니다. – user3437212

답변

0

가정 목록 파일이 포함되지 않은 파일의 목록을 반환해야합니다,이 명령

dir /b | findstr /l /v /x /i /g:list1 | findstr /l /v /x /i /g:list2 

(그들은 같은 폴더에 같은 경로에 대한 필요가 없습니다) 파일의 이름을 포함 두 목록 중 어느 것도 없습니다.

모든 파일을 열거하고 list1에없는 요소를 검색하여 목록을 필터링 한 다음 list2에없는 요소에 대해이 목록을 필터링합니다.

+0

문제가 있습니다. list1에 M : \ Folder1 \ Folder2 \ somefile.txt가 있다고 가정하면 dir/b/s의 출력에서 ​​M : \ Folder1 \ Folder2 \ somefile.txt와 일치합니다. 그러나 내 목록 중 하나에 M : \ Folder1 \에 대한 항목이지만 dir/b/s의 출력에 표시됩니다. 어떻게 이러한 항목을 제거 할 수 있습니까? – user3437212

+0

@ user3437212, 답변에있는 코드는 질문이 * one * 폴더 (그 안의 파일과 폴더)의 내용에 대해 묻는 것처럼'/ s'을 사용하지 않습니다. 이 시나리오에서는 재귀 검색이나 목록 내부의 전체 경로가 필요 없습니다. 이것이 실제 사례가 아닌 경우 질문을 실제 요구 사항과 두 파일의 내용 샘플로 업데이트하십시오. –