Windows에서 최대 파일 경로 길이 제한 극복


36

고객 중 한 명이 습관적으로 매우 긴 경로 이름 (긴 이름을 가진 여러 개의 중첩 된 폴더)을 사용하며 경로를 260 자 미만으로 줄이기 위해 "사용자 교육 문제"가 발생합니다.

사용 가능한 기술 솔루션이 있습니까? Windows 7 및 Windows 2008 R2에서 일종의 스위치를 사용하여 "이 역사적 문제를 무시하고 +260 문자 경로 이름을 작동 시키십시오"라고 말할 수 있습니까?

추신 : 나는 파일, 경로 및 네임 스페이스 이름 지정 으로 읽고 완전히 수정하지 않았습니다.


3
여기에 우리는 2018에 있으며 문제는 여전히 ROBOCOPY에 있습니다. 255 제한 그것을 초과하는 사람들은 단순히 경고음을 내지 만 복사하지는 않습니다.
SDsolar

@ SDsolar : 이전 버전의 robocopy를 사용하고 있습니까?
Naikrovek

네, 같은 말을하려고 했어요
Rob Nicholson

답변:


12

방법이 있지만 Microsoft가 파일 브라우저 위젯을 다시 코딩 할 때까지 우리는 그 오래된 문제에 거의 빠져 있습니다. 차선책이지만 그것이 작동하는 방식입니다.


5
새 ...의 몇 가지 OS 릴리스에 대한 고정되지 않은 된 MS 소프트웨어의 버그,
휴 버트 Kario

2
Windows 10 1607은 마침내 파일 브라우저 문제를 해결 했으며이
HackSlash

28

아직 여기에 언급되지 않은 트릭을 언급하는 것입니다.

이 파일을 예로 들어 보겠습니다.

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

이 전체 파일 경로는 290 자입니다. 셸 (Windows 탐색기)과 대부분의 명령 줄 유틸리티는 아마이를 만지지 못할 것입니다.

다음 subst과 같이 명령을 사용하십시오 .

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

이제 파일에 액세스 (및 삭제, 이동 등) 할 수 있습니다.

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

이제 파일 이름은 ~ 235 자 정도이므로 "파일 이름이 너무 깁니다"문제가 더 이상 발생하지 않습니다.

Windows API에는로 알려진 악명 높은 상수가 있습니다 MAX_PATH. MAX_PATH는 260 자입니다. NTFS 파일 시스템은 실제로 최대 32,767 자의 파일 경로를 지원합니다. 또한 Windows API 함수의 유니 코드 (또는 "와이드") 버전에 액세스하고 경로 접두어를 사용하여 32,767 자의 긴 경로 이름을 계속 사용할 수 있습니다 \\?\.

MAX_PATH아주 오래 전에 Windows 세계 에서 돌로 설정되었습니다 . 나는 당시 ANSI 표준과 관련이 있다고 생각하지만 ... 지금 Microsoft가 작성한 일부 프로그램을 포함하여 수천 개의 프로그램과 응용 프로그램이 있기 때문에 Microsoft가 지금 변경하기가 매우 어려운 것 중 하나입니다. MAX_PATH상수가 갑자기 변경되면 이상한 새로운 방식으로 실패합니다. (버퍼 오버 플로우, 힙 손상 등)


9
subst디렉토리 접합을 사용 하는 것과 비슷한 접근 방식 을 사용하여 몇 가지 빠른 변경을 원할 때 정리하는 것이 더 편리 할 수 ​​있습니다. Link Shell Extension을 사용 하지만 다음 mklink과 같이 명령을 사용할 수 있습니다 mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow".
Charles Grunwald

10

\\? \ C : 표기법을 사용하여이 제한을 해결할 수 있습니다. 추악하지만 최대 2 ^ 15의 파일 길이를 지원합니다.

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath


2
그래, 내가 말했듯이 그것을 읽었습니다 (내 링크 참조). 그러나 정확히 어떻게 이점을 얻습니까? 예를 들어 드라이브를 \\? \ something에 매핑 할 수 있습니까? 이해가 안 돼요 이 기사는 Windows API를 사용하는 프로그래머를 대상으로합니다. 필요에 따라 .NET으로 코드를 작성하는 동안 C ++ 등을 사용하지 않으며 Windows 탐색기와 일반 파일 대화 상자 등을 사용하는 고객 직원에게 어떤 관련이 있는지 알 수 없습니다.
Christopher Edwards

1
궁극적으로 아무것도 없습니다. :-/ 슬프게도.
Chris K

@ChristopherEdwards 폴더 계층에서 더 낮은 지점에 대한 접합을 만들 수 있습니다.
Hubert Kario

1
@ChristopherEdwards 당신은 c:\usr-data`c : \ Users \ VeryLongUserName \ LongFolderName`에 대한 링크 를 만들어 전자를 사용하라고 말할 수 있지만, 그가 40 개의 문자로 폴더의 이름을 정기적으로 지정하면 도움이되지 않습니다 ...
Hubert Kario

2
7-zip은 행복하게 \\? \ C : 표기법으로 찾아보고 복사합니다.
매트 리옹

9

Microsoft는 이제 Windows 10부터는 파일, 경로 및 네임 스페이스 MSDN 이름 지정 기사 에서 설명하는이 수정 프로그램을 사용할 수 있습니다 .

darthcoder는 이미 \\?\C:표기법 해결 방법 에 대한 세부 정보로 답변 했지만 이제 HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)단일 시스템에 대한 MAX_PATH 제한을 제거하는 데 사용할 수 있는 레지스트리 키 가 있습니다. 이 기사는 또한 Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths필요한 경우 조직 또는 그룹 차원의 구현을 위한 그룹 정책 제어에 대한 지원을 언급 합니다.


필자는 철저한 테스트를 수행 할 시간이 없었지만 지금까지이 솔루션과 혼합 된 결과를 보았으며 이것이 Windows [파일] 탐색기의 문제를 해결 함을 확인할 수 없습니다.
JimNim

2
파일 탐색기에서는 시스템과 NTFS가 긴 경로를 처리 할 수 ​​있지만 탐색기는 다시 코딩되기 전까지는 사용할 수 없기 때문에이 기능은 작동하지 않습니다.
ingyhere

추신 : 실제로 작동하려면 탐색기 위에이 SO 링크 의 복사 프로그램 중 하나를 사용해야 합니다.
ingyhere

1
좋은 정보! 이 경우 아마도 Robocopy를 고수 할 것입니다.
JimNim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.