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 za długa, aby przenieść się do nowego miejsca docelowego lub 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 zbyt długa? Dlaczego to się dzieje?
Szczerze,
Pan zdezorganizowany
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 dowiedzieć się, jak system Windows współdziała z nimi, zanim zaczniemy zagłębiać się w rozwiązania.
W Windows 95 wprowadzono długie nazwy plików za pośrednictwem podstawowej architektury MS-DOS. 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 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 większości) mocno wyprasowana. Jeśli korzystasz z wersji systemu Windows od 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: \ twoja-256-ścieżka-znaków \.
Więc co się stało podczas czyszczenia komputera jest to, że masz katalog z długą ścieżką (albo dlatego, że nazwy folderów były długie, nazwy plików były długie, albo obie), i kiedy próbowałeś przenieść jeden lub więcej z 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.
Gdzie 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łem artykuł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 prostym 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 kasować mnóstwo starych katalogów, które są zbyt długie, aby Windows mógł sobie z nimi poradzić, gdy jest ograniczony przez zmienną MAX_PATH), jest tam praca z wiersza poleceń. Mimo że system Windows jest ograniczony przez zmienną MAX_PATH, inżynierowie systemu 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 korzystać z 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 miałeś 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ć komendę z:
rmdir c: \ dokumenty \ trochę-naprawdę-bardzo-długi-folder-nazwa-schematu \
do:
rmdir \\? \ c: \ documents \ some-really-super-long-folder-name-scheme \
Kluczem jest dodanie \\? \
część przed 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 problemu jest dla Ciebie ciekawy, koniecznie przeczytaj ten artykuł z biblioteki Microsoft Developer Network, Nazewnictwo plików, Ścieżek i Obszarów nazw, aby uzyskać więcej informacji o tym, co dzieje się pod maską.
Masz pytanie techniczne? Napisz do nas e-mail na adres [email protected], a my dołożymy wszelkich starań, aby na nie odpowiedzieć.