Czy system Windows 7 naprawił limit 255 znaków ścieżki pliku?

92

Jak rozumiem, ograniczenie do 255 znaków w ścieżce pliku jest ograniczeniem systemu Windows. Jaki jest tego powód? Jeśli tak, czy problem został rozwiązany w systemie Windows 7?

W naszych praktykach ciągłej integracji często mamy głęboko zagnieżdżone struktury projektów i byłoby niezwykle przydatne, gdybyśmy mogli przekroczyć 255 znaków. W tej chwili jesteśmy nieco zmuszeni do konstruowania naszych projektów w taki sposób, aby nie uderzyć w ten sztuczny sufit.

Matt
źródło
3
@DavidHeffernan Ale to 260 zawiera znak null na końcu i `C: \` na początku, więc tylko 255 znaków jest użytecznych.
Aaron Dufour
2
@DavidHeffernan Myliłem się. Microsoft często cytuje długość jako 256, co jest wynikiem prawidłowego odejmowania, a nie 260, co jest technicznie ograniczeniem.
Aaron Dufour
5
Ten problem mnie wkurza. Nadal jest obecny w systemie Windows 8.1. Wydaje się, że nie mogę przenosić moich plików, mimo że w JAKIŚCIE plik został utworzony w pierwszej kolejności. Jeśli znajdziesz sposób na utworzenie plików z ponad 255 nazwami ścieżek plików, możesz całkowicie zepsuć czyjś komputer z systemem Windows.
Automatico
Według Jeremy'ego Kuhne problem jest rozwiązywany i może wkrótce znaleźć rozwiązanie. Zobacz ten film. youtube.com/watch?v=ZppqEMegCAA
J Edward Ellis
Pytanie dotyczy systemu Windows 7, ale system Windows 10 ma opcję włączenia długich ścieżek dla niektórych aplikacji. Aby uzyskać więcej informacji, zapoznaj się z tą odpowiedzią: stackoverflow.com/questions/27680647/ ...
quasoft

Odpowiedzi:

44

Zobacz http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Wyjaśnia to, że wersje Unicode interfejsów API systemu Windows mają wyższe limity i jak to włączyć.

Drew Hoskins
źródło
14
Ale słowo ostrzeżenia: jest trochę kodu (głównie narzędzia systemowe innych firm i tym podobne), który nie działa dobrze z dłuższymi ścieżkami. Możesz mieć z tym problemy, jeśli zaczniesz używać dłuższych ścieżek.
Przywróć Monikę Larry Osterman
2
Czy ten artykuł jest poprawny? Zrobiłem prosty test z Eksploratorem Windows i wierszem polecenia systemu Windows w systemie Windows 7 i nie mogę utworzyć ścieżek plików zawierających ponad 260 znaków. Czy firma Microsoft nie zaktualizowała tych aplikacji, aby korzystały z wersji Unicode interfejsów API systemu Windows?
Templar
7
Niestety Eksplorator Windows w systemie Windows 7 x64 nadal podlega temu limitowi ścieżki. Sprawia to wrażenie, że cały system operacyjny nie przekroczył tego ograniczenia, podczas gdy tak naprawdę to tylko Eksplorator Windows nie został zaktualizowany do pracy z dłuższymi ścieżkami. Jest możliwe, że menedżer plików innej firmy korzystający z najnowszych interfejsów API mógłby to obejść. Ostatecznie to, czy program wydaje się osiągać limit ścieżki, będzie zależeć od tego, czy program ten używa najnowszych interfejsów API w systemie Windows.
user1445967
2
Nie jest to kwestia „nowszych” czy „starszych” interfejsów API. Obsługa długich ścieżek jest dostępna tylko wtedy, gdy wyraźnie o to poprosisz, a Explorer tego nie robi, prawdopodobnie z oczywistego powodu: kompatybilności z istniejącymi aplikacjami innych firm.
Harry Johnston
9
-1 - Odnośnik do potencjalnego rozwiązania jest zawsze mile widziany, ale proszę dodać kontekst do niego, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego się tam znajduje. Zawsze cytuj najbardziej odpowiednią część ważnego linku, na wypadek gdyby strona docelowa była nieosiągalna lub została trwale wyłączona. meta.stackoverflow.com/tags/link-only-answers/info
Aaron Hall
20

Jeśli zajdzie taka potrzeba, możesz ominąć ten limit, używając subst.

Joshua
źródło
1
Lub robocopy, która jest wbudowana w system Windows, w oparciu o tę odpowiedź, stackoverflow.com/questions/29865863/ ...
KAE
5
Powinieneś zademonstrować, jak i podać link do odpowiedniej dokumentacji. -1
Aaron Hall
3
Chociaż głosowałem za, zgadzam się, że przykład byłby przydatny: dzięki subst E: D:\TESTDATA\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1\4B871B~1 temu mogłem obejść ścieżkę o głębokości 500 znaków. Powodem ~ 1s jest sposób, w jaki Explorer sformatował ścieżkę.
Adam Marcionek
1
Podobnym rozwiązaniem byłoby użycie skrzyżowań , albo przez przedłużenie powłoki, albo przez mklink Przykład:mklink /J C:\newdir C:\some\really\long\path\
Charles Grunwald
14

Obejścia nie są rozwiązaniami, dlatego odpowiedź brzmi „Nie”.

Wciąż szukam obejść, oto możliwe rozwiązania: http://support.code42.com/CrashPlan/Latest/Troubleshooting/Windows_File_Paths_Longer_Than_255_Characters

user1767754
źródło
1
Podstawowe elementy systemu Windows, w tym PowerShell, Windows Explorer Shell i narzędzia cmd, takie jak del, nadal nie obsługują ścieżek przekraczających 250 znaków, a żadne obejście nie rozwiązuje faktu, że podstawowe technologie firmy Microsoft nie obsługują długich ścieżek od 2016 r. Krótka odpowiedź tutaj jest tak, że dopóki Microsoft nie zacznie działać, niewiele możemy zrobić.
Warren P
4

@ Cort3z: jeśli problem nadal występuje, ta poprawka: https://support.microsoft.com/en-us/kb/2891362 powinna go rozwiązać (od win7 sp1 do 8.1)

ale.com
źródło
To świetne rozwiązanie. Czy miałeś jakieś problemy po użyciu?
Gabriel Fair
1

W systemie Windows 10 w wersji 1607 ograniczenie zostało usunięte poprzez ustawienie klucza rejestru

https://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx?f=255&MSPPError=-2147217396#maxpath

chedabob
źródło
2
ale nie w windows 7?
gumuruh
Nie wydaje się rozsądne, aby tak naprawdę głosować w dół, ponieważ chociaż nie odpowiada to na pytanie, prawdopodobnie jest przydatne dla wielu osób, które mają podobne pytania.
mwfearnley
Są jednak inne pytania dotyczące Win10
mjs