여러 폴더의 모든 파일을 단일 폴더로 복사


3

나는 3000 개 폴더에 대한 65000 파일이 c:\foo\root(즉 c:\foo\root\folder1, c:\foo\root\folder2등). 모든 파일을 단일 폴더로 복사하고 싶습니다 c:\All\.

Robocopy를 시도했지만 전체 사본 (디렉토리 포함)을 수행합니다. 복사 과정에서 이름이 같은 파일을 발견하면 temp(2).file무시하거나 덮어 쓰지 않고 새 파일의 이름을 바꾸 거나 비슷한 것으로 변경해야합니다 .

배치 파일 / 명령 프롬프트 로이 작업을 수행하는 방법을 아는 사람이 있습니까? 일부 C #조차도 좋을 것입니다.


단일 디렉토리에 65K. 익스플로러에서 열기, 리스팅, 검색과 같은 것들에 어떤 영향을 미치는지 알려주십시오. 흥미로울 것 같습니다.
therube

처음에 디렉토리를 여는 것은 문제가되지 않지만 파일을 이동, 이름 바꾸기 또는 삭제하려고하면 막대한 속도 저하가 발생합니다. 그렇게하면 탐색기는 1, 10, 100, 1000, 11, 110, 1100 등의 목록을 사용하고 논리적 1, 2, 3 방식으로 목록을 작성합니다. 정렬 및 리조트하는 데 시간이 오래 걸립니다. NTFS 파일 시스템은 최대 40 억 개의 파일을 처리 할 수 ​​있습니다 (모두 같은 디렉토리에있을 수 있다고 가정). 행운을 빕니다. 매끄럽게 실행하려면 폴더 당 약 10000 개의 파일이 한계라고 생각합니다.
Alex

답변:


1

ATM을 명확하게 생각하지 않기 때문에 이것은 둥근 방법입니다 ...

압축하지 않는 방법을 사용하여 트리를 보관하는 경우 두 가지 방법으로 작업 할 수 있습니다. 트리 (하위 디렉토리 포함)를 아카이브하고 'X'(전체 경로가있는 추출 파일) 대신 'E'(추출)로 추출하면 추출 된 파일이 단일 디렉토리에 배치됩니다. 다른 방법으로 "이름에서 경로를 제외"하도록 아카이브를 만들 수 있습니다. 그런 다음 생성 된 아카이브는 경로가 부족합니다. 즉, 아카이브의 단일 디렉토리에 저장된 모든 파일입니다. 따라서 압축을 풀면 압축이 풀립니다. (이전 방법을 생각하는 것이 더 합리적입니다.)

(ARJ는 이것을 할 수 있습니다. 7z & RAR & ZIP도 가능하다고 생각하십니까?)

"Flatten"은 제가 생각했던 단어였습니다. 이를 통해 백업 / 동기화 프로그램을 디렉토리 구조를 "평평하게"설정할 수 있습니다.

다른 생각들 ... Tar & DD? 어쩌면 ATM을 생각하지 않는 다른 사람들이 더 나은 답변을 얻을 수 있도록 도와 줄 것입니다.

(타르를 사용한 지 오랜 시간이 지났기 때문에베이스에서 벗어날 수는 있지만 실제로는 ...)

 tar -cvf c:/foo/roo | tar -xvf -

아카이버 및 백업 / 동기화 장치는 자동화 된 방식으로 모든 딥을 처리 할 수 ​​있어야합니다.
ARJ 는 할 수 있습니다. 타르에 대해 모르십니까?


와아 나는 ARJ에 대해 들어 본 적이 없다. 나는 이것을 7z로 시도했지만 그런 행운은 없었습니다. 어쨌든 C #을 사용하여 임시 솔루션을 시도했습니다. 루트의 모든 폴더를 재귀 적으로 실행하고 모든 파일의 전체 경로를 텍스트 파일에 넣습니다. 그런 다음 File.Copy ()를 사용하여 텍스트 파일을 실행하고 각 파일의 이름을 1.pdf, 2.pdf, 3.pdf 등으로 지정하십시오. 어쨌든 원래 파일 이름이 필요하지 않으므로 작동합니다. 파일 덮어 쓰기에 대해 걱정할 필요가 없습니다. 방금 프로그램을 마치고 실행 중입니다-복사 할 ~ 35000 개의 파일이 남아 있습니다! 완료되면 65000 파일의 효과를 한 폴더에 게시합니다. 감사!
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.