Jak naprawić 'Filename Is Too Long’ Issue In Windows

Jeśli kiedykolwiek widziałeś ten problem, to prawdopodobnie była to prosta naprawa dla Ciebie. Jeśli widziałeś ten błąd więcej niż dwa razy, to wiesz również, że może to być skomplikowany problem do naprawienia czasami.

Miejmy nadzieję, że napotkasz tylko łatwą odmianę poprawki, ale przygotujemy cię na mniej łatwe, gwarantowane do pracy poprawki również.

Why Is Filename Length Even An Issue In Windows?

Istnieje długa historia długości plików będących problemem dla systemów operacyjnych takich jak Windows. Był czas, kiedy nie można było mieć nazw plików dłuższych niż 8 znaków plus 3-znakowe rozszerzenie pliku. Najlepsze, co można było zrobić, to coś takiego jak myresume.doc. Było to ograniczenie wprowadzone przez projekt systemu plików.

Rzeczy poprawiły się wraz z pojawieniem się nowych wersji systemu Windows. Od starego, ograniczonego systemu plików przeszliśmy do czegoś, co nazywało się Systemem Plików Nowej Technologii (NTFS). NTFS zabrał nas do punktu, gdzie nazwa pliku może mieć 255 znaków, a długość ścieżki pliku może potencjalnie sięgać 32,767 znaków. Więc jak możemy mieć nazwy plików, które są zbyt długie?

Windows ma rzeczy znane jako zmienne systemowe. Są to zmienne, na których Windows polega, aby funkcjonować, ponieważ Windows zawsze będzie wiedział, co te zmienne oznaczają i gdzie się znajdują, nawet jeśli przenosimy bity i bajty w różne miejsca. Zmienna systemowa MAX_PATH to ta, która ogranicza nazwy plików i ścieżki do mniej niż 260 znaków.

Będąc zmienną, można by pomyśleć, że możemy ją zmienić. Nie, nie powinniśmy. Byłoby to jak wyciąganie nitki ze swetra. Jak tylko zmieni się jedna zmienna systemowa, inne zmienne systemowe i zależne od nich komponenty zaczynają się rozplątywać.

Jak to naprawić?

Łatwa naprawa

Jeśli masz szczęście, dostaniesz błąd i będziesz wiedział dokładnie, jaka nazwa pliku jest przyczyną problemu. Albo przynajmniej gdzie znaleźć ten plik. Może masz nazwę pliku, który wygląda coś w stylu:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Jest oczywiste, kto jest sprawcą w tym przypadku. Znajdź plik w Eksploratorze Windows lub Eksploratorze plików, jak to się nazywa w Windows 10, kliknij raz na nim, naciśnij F2, aby zmienić nazwę i zmienić tę głupią nazwę pliku na coś bardziej rozsądnego. Problem rozwiązany.

Mniej łatwe poprawki

Nie zawsze jest tak łatwo naprawić ten problem. Czasami możesz nie być w stanie zmienić nazw plików lub katalogów z jakiegokolwiek powodu.

Następujące rozwiązania załatwią sprawę. Nie są one trudne do wykonania.

Move, Delete, Or Copy Files Or Directories Using PowerShell

Czasami pojawia się błąd podczas próby przeniesienia, usunięcia lub skopiowania katalogów, gdzie liczba znaków dla ścieżki pliku jest większa niż 260.

Zauważ, że słowa katalog i folder są wymienne. W dalszej części będziemy używać 'katalog’. Następujące cmdlety PowerShell mogą być również używane na plikach.

Prawdopodobnie ścieżka do pliku wygląda tak:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Ta ścieżka do pliku ma długość 280 znaków. Więc nie możemy skopiować katalogu stamtąd do innego miejsca za pomocą normalnej metody kopiuj-wklej. Otrzymujemy błąd Destination Path Too Long.

Załóżmy, że z jakiegoś powodu nie możemy zmienić nazwy katalogów, w których zagnieżdżony jest plik. Co zrobimy?

Otwórz PowerShell. Jeśli jeszcze nie korzystałeś z PowerShella, przeczytaj nasz artykuł Using PowerShell for Home Users – A Beginner’s Guide. Możesz jednak wykonać następne kroki bez czytania artykułu.

Po uruchomieniu PowerShella znajdziesz się w katalogu głównym swojego użytkownika. Postępuj zgodnie z założeniem, że C:\u2008>

Katalog o nazwie This znajduje się wewnątrz katalogu Documents. Aby przejść do katalogu Documents, używamy polecenia DOS cd Documents.

Zobaczysz, że znak zachęty zmieni się na C:\u2008>Dokumenty. To dobrze. Pracujemy bliżej katalogów, co ułatwi nam pracę.

Copy Directory Using Copy-Item

Chcemy skopiować katalog This i jego zawartość do ThatNewFolder. Użyjmy do tego celu cmdleta PowerShell Copy-Item z parametrami -Destination i -Recurse.

-Destination mówi PowerShellowi, gdzie chcemy, aby kopia była. -Recurse mówi PowerShellowi, aby skopiował wszystkie elementy wewnątrz do miejsca docelowego. Kopiowanie pozostawia oryginały tam, gdzie są, i tworzy wszystkie nowe w miejscu docelowym.

Copy-Item This -Destination ThatNewFolder -Recurse

Move Directory Using Move-Item

Powiedzmy, że chcemy przenieść katalog This, a wszystkie katalogi i pliki w nim, do ThatNewFolder. Przenoszenie nie pozostawia oryginału na miejscu.

Możemy użyć cmdleta PowerShell Move-Item z parametrami -Path i -Destination. -Path definiuje element, który chcemy przenieść, a -Destination mówi PowerShellowi, gdzie chcemy go przenieść.

Ccmdlet umieści This wewnątrz ThatNewFolder. Przeniesie również wszystko, co znajduje się wewnątrz katalogu This. Polecenia Move-Item można używać do przenoszenia plików lub katalogów, a działa ono niezależnie od ścieżki pliku lub długości nazwy pliku.

Move-Item -Path This -Destination ThatNewFolder

Aby upewnić się, że to zadziałało, użyj polecenia cd ThatNewFolder, aby dostać się do ThatNewFolder. Następnie użyj polecenia dir, aby wyświetlić listę katalogów w ThatNewFolder. Zobaczysz, że znajduje się tam katalog This.

Usuń katalog, używając polecenia Remove-Item

Jeśli chcemy usunąć katalog This i wszystko, co się w nim znajduje, używamy polecenia cmdlet Remove-Item.

Scmdlet Remove-Item posiada pewne wbudowane zabezpieczenia, które utrudniają usunięcie katalogu z rzeczami w nim się znajdującymi. W naszym przykładzie wiemy, że chcemy usunąć wszystko, więc użyjemy parametrów -Recurse, aby usunąć wszystko wewnątrz i -Force, aby zrobić to bez pytania nas, czy jesteśmy pewni dla każdego elementu wewnątrz. Odzyskanie czegokolwiek usuniętego w ten sposób będzie niezwykle trudne. Możesz spróbować metod z How to Recover Accidentally Deleted Files, ale nie spodziewaj się zbyt wiele.

Remove-Item This -Recurse -Force

Możesz ponownie użyć polecenia dir, aby upewnić się, że już go nie ma.

Make Windows 10 Accept Long File Paths

Jeśli wiesz, że będziesz używać długich ścieżek do plików i długich nazw plików wielokrotnie, łatwiej jest sprawić, by Windows pracował za Ciebie. Nie ma sensu używać PowerShell do wykonywania pracy każdego dnia.

Istnieją dwa sposoby, w jakie możemy to zrobić. Jeden z nich jest przeznaczony dla użytkowników Windows 10 Home, a drugi dla użytkowników Windows 10 Pro lub Enterprise. Te metody mogą działać dla Windows 8.1 lub wcześniejszych, ale nie możemy tego zagwarantować.

Make Windows 10 Home Accept Long File Paths

Aby Windows 10 Home akceptował długie ścieżki do plików, musimy otworzyć Edytor rejestru. Jeśli nie pracowałeś wcześniej w Edytorze rejestru, bądź ostrożny. Przypadkowe usunięcie lub zmiana rzeczy w tym miejscu może całkowicie uniemożliwić działanie systemu Windows.

Przed wprowadzeniem jakichkolwiek zmian zawsze wykonuj kopię zapasową rejestru. Dowiedz się wszystkiego, co musisz wiedzieć na ten temat w naszym Ostatecznym przewodniku po tworzeniu kopii zapasowych i przywracaniu rejestru systemu Windows.

Po otwarciu Edytora rejestru i utworzeniu kopii zapasowej przejdź do lokalizacji HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\FileSystem i znajdź klucz LongPathsEnabled.

Kliknij dwukrotnie klucz LongPathsEnabled. W polu Value data: upewnij się, że znajduje się tam liczba 1. Kliknij OK, aby zatwierdzić zmianę.

Wyjdź z Edytora rejestru i powinieneś być teraz w stanie pracować ze zwariowanie długimi ścieżkami do plików.

Make Windows 10 Pro Or Enterprise Accept Long File Paths

Aby zezwolić systemowi Windows 10 Pro lub Enterprise na używanie długich ścieżek do plików, użyjemy Edytora zasad grupy. Jest to narzędzie, które pozwala nam ustawić zasady działania systemu Windows na poziomie komputera i użytkownika.

Mamy kilka artykułów na temat używania zasad grupy do robienia takich rzeczy, jak wyłączanie lub włączanie opcji Internet Explorera lub dodawanie komunikatu do ekranu logowania.

Otwórz Edytor zasad grupy, przechodząc do menu Start i wpisując gpedit. Górnym wynikiem powinno być Edit group policy. Kliknij na nią dwukrotnie.

Po otwarciu Edytora zasad grupy przejdź do Konfiguracja komputera > Szablony administracyjne > System > System plików. Tam zobaczysz politykę Enable Win32 long paths.

Kliknij na nią dwukrotnie, aby edytować ustawienie polityki. Zmień je z Disabled na Enabled, a następnie kliknij przycisk OK, aby zatwierdzić zmianę.

Polityka może nie zacząć obowiązywać od razu. Można jednak wymusić aktualizację zasad grupy.

That’s It

Istnieją inne sposoby na obejście długich nazw plików i ścieżek do nich, ale to, co tutaj przeszliśmy, to najprostsze i najbardziej efektywne metody.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.