22Aug

Dlaczego system Windows raportuje, że ten folder jest zbyt długi do skopiowania?

Jeśli pracujesz z systemem Windows wystarczająco długo, szczególnie w przypadku folderów i plików o długich nazwach, wystąpi dziwny błąd: system Windows zgłasza, że ​​ścieżka lub nazwa folderu jest zbyt długa, aby przejść do nowego miejsca docelowego, a nawet usunąć.O co chodzi?

Hej How-To Geek!

Więc pewnego dnia reorganizowałem niektóre pliki na moim komputerze, tworząc foldery, tego typu rzeczy. Następnie, kiedy przenosiłem niektóre pliki do folderu, otrzymuję komunikat z informacją, że powstała ścieżka folderu będzie zbyt długa. Byłem zmieszany. Wiem, że każdy system operacyjny, ponieważ DOS obsługuje długie nazwy plików, ale Windows twierdzi, że ścieżka jest za długa? Dlaczego to się dzieje?

Sincerly,

Mr. Disorganized

Problem, na który napotykasz, to niefortunne skrzyżowanie dwóch systemów, które w takich przypadkach powoduje błąd. Aby dokładnie zrozumieć, skąd bierze się błąd, musimy zagłębić się w historię długich nazw plików( LFN) i sposobu, w jaki system Windows współdziała z nimi, zanim zagłębimy się w rozwiązania. Długie nazwy plików

zostały wprowadzone za pomocą podstawowej architektury MS-DOS w systemie Windows 95. Nowy system LFN dopuszczał nazwy plików i katalogów o długości do 255 znaków. Było to mile widziane rozwinięcie poprzedniego systemu nazw plików, zwykle o nazwie 8.3 filenaming, ponieważ nazwa była ograniczona do ośmiu znaków i trzycyfrowego rozszerzenia, ale również znana jako krótka nazwa pliku( SFN).Jak można sobie wyobrazić, w tamtych czasach wciąż było wiele aplikacji opartych na systemie DOS i było więcej niż kilka bólów głowy, próbujących zmusić nowszych LFN i starszych SFN do miłego grania ze sobą.Jeśli kiedykolwiek natknąłeś się na starszą dyskietkę lub CD-ROM z dziwnie obciętymi plikami( jak abcdef ~ 1.txt), nazwa pliku została wycięta przez jakąś starszą wersję SFN z dłuższego i nieobsługiwanego LFN( jak abcdefghijk.tekst).

Jesteśmy jednak daleko od połowy lat 90., a cała długa nazwa pliku jest( w przeważającej części) mocno wyprasowana. Jeśli używasz wersji systemu Windows z ostatnich 10 lat, prawdopodobnie nigdy nie natkniesz się na konflikt długości nazwy pliku, tak jak kiedyś używaliśmy go w systemie DOS / Windows 95.To powiedziawszy, nadal napotykamy na czkawkę, jak odkryłeś w projekcie czyszczenia dysku. Ale dlaczego? Jeśli system Windows "Long Filename" obsługuje foldery i nazwy plików składające się maksymalnie z 255 znaków na komponent, do jakiej ściany się używasz? Nie możemy winić NTFS( systemu plików używanego przez większość nowoczesnych komputerów Windows), ponieważ NTFS będzie obsługiwać łańcuchy folderów i nazw plików do całkowitej długości ścieżki 32 767 znaków. To znacznie przekracza typową strukturę katalogów, jakiej większość użytkowników kiedykolwiek by potrzebowała.

Tam, gdzie wszystko się rozpada, jest sztuczne ograniczenie, które Windows nakłada na system LFN / NTFS: zmienną MAX_PATH.Zmienna MAX_PATH określa, że ​​pełna struktura katalogów w systemie Windows nie może przekraczać 260 znaków łącznie z literą dysku, dwukropkiem, ukośnikiem odwrotnym i luzem pustym na końcu. W ten sposób masz tylko potencjalną prawdziwą MAX_PATH z 256 znaków, np. C: \ your-256-znak-ścieżka \ .

Więc co się stało, kiedy sprzątałeś swój komputer to to, że miałeś katalog z długą ścieżką( albo dlatego, że nazwy folderów były długie, nazwy plików były długie, albo oba) i kiedy próbowałeś przenieść jeden lub więcejz tych katalogów do innego katalogu z długą ścieżką, całkowita długość nazwy ścieżki przekroczyła limit 260 znaków nałożony przez zmienną MAX_PATH.

Teraz możesz myśleć "Ah-hah! Zmienimy tylko zmienną MAX_PATH i rozwiążemy problem! "Niestety, to nie takie proste. Zmienna MAX_PATH jest nie tylko mocno zakodowana w systemie Windows, ale nawet jeśli przeszedłeś przez ogromną trudność jej zmiany, skończyłabyś tak bardzo, że nie byłaby tego warta. Zbyt wiele aplikacji oczekuje, że zmienna ścieżki będzie taka, jak długo określona przez system Windows. Nie możemy po prostu obejść zmiany bez tworzenia ogromnego bałaganu.

Dokąd to cię opuszcza? Cóż, najprostszym rozwiązaniem jest po prostu edycja danych ścieżki. Na przykład, jeśli masz dużo zapisanych artykułów, w których aplikacja / rozszerzenie użyte do zapisania ich w sieci utworzyło katalog, który był pełnym tytułem artykułu + nagłówek artykułu, a następnie sama nazwa pliku jest pełnym tytułemartykułu i artykułu prowadzącego, byłoby naprawdę łatwo trafić lub przekroczyć MAX_PATH z jednym zapisaniem. Edycja tych ogromnych tytułów folderów i artykułów do rozsądniejszego rozmiaru jest łatwym sposobem na rozwiązanie problemu.

Jeśli masz ogromną liczbę plików o długiej ścieżce i nie chcesz ich edytować wszystkie( lub jeśli chcesz usunąć wiele starych katalogów, które są zbyt długie, aby system Windows mógł sobie z nimi poradzić, gdy są ograniczone przezZmienna MAX_PATH), wokół działa wiersz poleceń.Mimo że system Windows jest ograniczony przez zmienną MAX_PATH, inżynierowie Windows zdali sobie sprawę, że pojawią się sytuacje, w których użytkownicy będą musieli radzić sobie z dłuższymi nazwami ścieżek. W związku z tym interfejs API systemu Windows ma funkcję radzenia sobie z wyjątkowo długimi ścieżkami.

Aby skorzystać z tego interfejsu API i użyć narzędzi wiersza poleceń na swoich nieporęcznych nazwach folderów / plików, wystarczy dodać nazwę katalogu za pomocą kilku dodatkowych znaków. Na przykład, jeśli masz ogromną strukturę katalogów, którą chciałeś usunąć( ale otrzymałeś błąd z powodu długości ścieżki podczas jej próby), możesz zmienić polecenie z:

rmdir c: \ documents \ some-really-super-długie-folder-nazwa-schematu \

do:

rmdir \\? \ c: \ dokumenty \ trochę-naprawdę-bardzo-długi-folder-nazwa-schematu \

Kluczem jest dodanie \\? \ porcjiprzed rozpoczęciem ścieżki do pliku;to nakazuje systemowi Windows zignorowanie ograniczeń nałożonych przez zmienną MAX_PATH i interakcję ze ścieżką, którą właśnie podałeś, dostarczoną / zrozumianą bezpośrednio przez podstawowy system plików( który może wyraźnie obsługiwać dłuższą ścieżkę).Jak zawsze, zachowaj ostrożność w wierszu polecenia, aby uniknąć przypadkowego usunięcia plików lub katalogów, które zamierzasz pozostawić w stanie nienaruszonym.

Jeśli nasz przegląd tego zagadnienia jest dla ciebie ciekawy, zdecydowanie zagłębij się w ten artykuł z biblioteki Microsoft Developer Network, Nazewnictwo plików, Ścieżek i Przestrzeni nazw, aby uzyskać więcej informacji o tym, co dzieje się pod maską.

Masz pytanie dotyczące technologii prasowej? Napisz do nas e-mail na adres [email protected], a my dołożymy wszelkich starań, aby na nie odpowiedzieć.