홈페이지 » 어떻게 » Windows보고가이 폴더가 너무 오래 복사 할 수없는 이유는 무엇입니까?

    Windows보고가이 폴더가 너무 오래 복사 할 수없는 이유는 무엇입니까?

    Windows에서 특히 긴 이름을 가진 폴더 및 파일을 사용하여 작업하는 경우 기괴한 오류가 발생합니다. Windows에서 폴더 경로 또는 파일 이름이 너무 길어서 새 대상으로 이동하거나 삭제할 수 없다고보고합니다. 거래는 뭐니??

    헤이 How to To Geek!

    그래서 다른 날에 컴퓨터에서 폴더, 그런 종류의 파일을 만드는 일부 파일을 재구성하려고했습니다. 그런 다음 일부 파일을 폴더로 옮길 때 결과 폴더 경로가 너무 길다는 메시지가 나타납니다. 나는 혼란 스러웠다. 도스 이후의 모든 단일 OS는 긴 파일 이름을 지원하지만 Windows는 경로가 너무 길다는 것을 알고 있습니다. 왜 이런 일이 일어나는가??

    신성한,

    미스터리

    당신이 겪고있는 문제는 두 시스템의 불행한 교차점입니다, 이런 경우에는 오류가 발생합니다. 오류의 출처를 정확히 이해하려면 LFN (Long Filenames)의 역사와 Windows가 솔루션과 관련하여 어떻게 상호 작용하는지 알아야합니다..

    긴 파일 이름은 Windows 95에서 기본 MS-DOS 아키텍처를 통해 도입되었습니다. 새로운 LFN 시스템은 최대 255 자의 파일 및 디렉터리 이름을 허용했습니다. 이름은 8 자 및 3 자리 확장자로 제한되었지만 SFN (Short Filename)으로도 알려 졌기 때문에 이전의 파일 이름 시스템을 일반적으로 8.3 파일 이름이라고도합니다. 당신이 상상할 수 있듯이, 그 당시에도 여전히 많은 DOS 기반 응용 프로그램이 있었으며, 새로운 LFN과 레거시 SFN을 서로 잘 조화시키려는 시도가 몇 가지 이상있었습니다. 이상하게 잘린 파일 (예 : abcdef ~ 1.txt)이있는 구형 디스켓이나 CD-ROM을 발견 한 적이 있다면 그 파일 이름은 일부 SFN을 사용하는 레거시 응용 프로그램에서 더 길고 지원되지 않는 LFN (예 : abcdefghijk)에서 줄였습니다. txt).

    우리는 1990 년대 중반부터 먼 길을 가고 있지만 긴 파일 이름 전체가 (대부분은) 단호하게 다림질되어 있습니다. 지난 10 년간 Windows 버전을 사용하고 있다면 DOS / Windows 95 시대에 사용했던 것과 같은 파일 이름 길이 충돌을 경험하지 못했을 것입니다. 즉, 디스크 정리 작업을 통해 발견 한 것처럼 우리는 여전히 딸꾹질을 겪습니다. 그런데 왜? Windows의 Long Filename 시스템이 구성 요소 당 최대 255 자의 폴더 및 파일 이름을 지원하는 경우 어떤 벽을 사용하고 있습니까? NTFS는 32,767 자의 총 경로 길이까지 폴더 및 파일 이름의 연결을 지원하므로 NTFS (대다수의 최신 Windows 컴퓨터에서 사용하는 파일 시스템)를 비난 할 수 없습니다. 대부분의 사용자가 필요로하는 일반적인 디렉토리 구조를 훨씬 초과합니다..

    LFN / NTFS 시스템 상단에 Windows가 쌓아 놓은 인위적인 제약 인 MAX_PATH 변수가 모두 무너져 버립니다. MAX_PATH 변수는 Windows의 전체 디렉토리 구조가 드라이브 문자, 콜론, 백 슬래시 및 끝에 null 백래시를 포함하여 총 260자를 초과 할 수 없음을 지정합니다. 따라서 잠재적 인 MAX_PATH는 256 자입니다 (예 :. C : \ your-256-character-path \.

    따라서 컴퓨터를 정리할 때 어떤 일이 발생했는지는 폴더 이름이 길거나 파일 이름이 길거나 둘 다 때문에 (예 : 폴더 이름이 길거나 둘 다 때문에) 이미 긴 경로가있는 디렉토리가 있고 그 중 하나 이상을 해당 디렉토리를 긴 경로가있는 다른 디렉토리에 넣으면 경로 이름의 총 길이가 MAX_PATH 변수에 의해 부과 된 260 자 제한을 초과했습니다.

    자, 당신은 "아 - 하하! 우리는 MAX_PATH 변수를 변경하고 문제를 해결할 것입니다! "아아, 그렇게 간단하지는 않습니다. MAX_PATH 변수는 본질적으로 Windows에 하드 코딩되어있을뿐만 아니라 변경에 대한 막대한 번거 로움을 겪었을지라도 가치가 없을 정도로 많이 파괴됩니다. 너무 많은 응용 프로그램은 path 변수가 Windows가 오랫동안 명시한 것으로 기대합니다. 엄청난 혼란을 일으키지 않고 변화시킬 수는 없습니다..

    그게 당신을 어디로 떠나요? 음, 가장 간단한 해결책은 경로 데이터를 편집하는 것입니다. 예를 들어 웹에서 저장 한 응용 프로그램 / 확장 프로그램이 기사의 전체 제목 + 기사 리드 인 디렉토리를 만든 다음 파일 이름 자체가 전체 제목 인 저장 한 기사가 많은 경우 기사 + 기사 리드의 경우, 단일 저장으로 MAX_PATH를 맞추거나 초과하는 것은 정말 간단합니다. 엄청난 폴더 및 기사 제목을보다 합리적인 크기로 편집하면 문제를 쉽게 해결할 수 있습니다..

    긴 경로를 가진 엄청난 수의 파일이 있고 그 파일을 모두 편집하지 않으려는 경우 (또는 지우다 MAX_PATH 변수에 의해 제한 될 때 Windows가 처리하기에는 너무 긴 오래된 디렉토리), 커맨드 라인을 해결할 수 있습니다. Windows가 MAX_PATH 변수로 제한 되더라도 Windows 엔지니어는 사용자가 더 긴 경로 이름을 처리해야 할 상황이 있음을 알았습니다. 따라서 Windows API에는 매우 긴 경로를 처리하는 함수가 있습니다..

    해당 API를 활용하고 다루기 힘든 폴더 / 파일 이름에 명령 줄 도구를 사용하려면 몇 가지 추가 문자로 디렉토리 이름을 추가하기 만하면됩니다. 예를 들어 삭제하려는 거대한 디렉토리 구조가있는 경우 (시도한 경로 길이로 인해 오류가 발생 함) 명령을 다음과 같이 변경할 수 있습니다.

    rmdir c : \ documents \ some-really-super-long-folder-name-scheme \

    에:

    rmdir \\? \ c : \ documents \ some-really-super-long-folder-name-scheme \

    핵심은 \\? \ 파일 경로의 시작 전에 부분; 이것은 Windows가 MAX_PATH 변수에 의해 부과 된 제한 사항을 무시하고 기본 파일 시스템 (분명히 더 긴 경로를 지원할 수 있음)에 의해 직접 제공 / 이해 된 것으로서 제공 한 경로와 상호 작용하도록 지시합니다. 항상 그렇듯이 명령 프롬프트에서 실수로 파일이나 디렉터리를 삭제하지 않도록주의하십시오.

    이 문제에 대한 개요가 궁금하다면 Microsoft 개발자 네트워크 라이브러리, 파일, 경로 및 네임 스페이스 명명에서이 문서를 자세히 살펴보고 후드에서 진행되는 작업에 대한 자세한 내용을 확인하십시오.


    기술적 인 질문이 있으십니까? [email protected]으로 전자 메일을 보내 주시면 답변 해 드리겠습니다..