Długość nazwy pliku systemu Windows 7 ograniczona do 129 znaków

18

Próbuję poprawnie nazwać pliki MP3 i uzyskałem dowolną długość 129 znaków (nie 128?). NTFS obsługuje 255 znaków w nazwach plików, jak to naprawić?

Star Wars - 6 - Return of the Jedi - 2 - 07 - Battle of Endor 2, Leia Is Wounded, The Duel Begins, Overtaking Bunker, Dark Si.mp3

Jan
źródło
2
Lepiej nie polegać na naprawdę długich nazwach plików, ponieważ może to prowadzić do wielu problemów. Pliki MP3 mogą mieć osadzone metadane w postaci tagów ID3 i / lub korzystać z katalogów.
JamesRyan
3
Otwieram pliki i listy odtwarzania; Nie używam „bibliotek multimediów”. Moje kolekcje są poprawnie nazwane, nie mam żadnych plików „1.mp3” i nie mogę znieść ludzi zbyt leniwych, aby poprawnie nazwać pliki; która „1.mp3”, gdy każdy album zawiera co najmniej jeden utwór. ಠ_ಠ
Jan

Odpowiedzi:

13

Możliwe jest, że przekroczysz 260 znaków dla całej nazwy ścieżki, w tym znaków odwrotnego ukośnika.

Ile znaków jest na ścieżce, w tym nazwa pliku mp3?

David Paige
źródło
1
Tak, okazuje się, że zmiana nazwy plików na dysku bez katalogów pozwala na dłuższe nazwy. Dość kiepskie, że nazwa pliku i ścieżki są policzone razem, a nie osobno.
Jan
5
stała MAX_PATH jest zdefiniowana jako 260, a nie 256
phuclv
Jednak foldery mają maksymalnie „247 znaków + <null>”. Zobacz stackoverflow.com/a/15971467/632951
Pacerier
34

W systemie Windows domyślna całkowita długość ścieżki nie może przekraczać 260 znaków ( drive+ :\+ 255 characters of filename+ null terminator+ prawdopodobnie dla ostatecznego \przypadku, gdy ścieżka jest katalogiem lub po prostu dla zaokrąglenia). Był to relikt z ery 8.3 DOS-a, w którym 260-znakowa ścieżka jest naprawdę głęboką ścieżką.

Możliwe, że ścieżka do folderu była już bardzo długa, więc pozostała część nazwy pliku to tylko 129. Jeśli chcesz dłuższą ścieżkę, masz kilka rozwiązań:

Od systemu Windows 10 istnieje inna opcja, usuwając ograniczenie MAX_PATH § . Możesz go włączyć, ustawiając HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabledw rejestrze lub ustawiając Konfiguracja komputera> Szablony administracyjne> System> System plików> Włącz długie ścieżki NTFS w zasadach grupy


Czytaj więcej:

Maksymalna ścieżka 32 767 znaków jest przybliżona, ponieważ \\?\prefiks może zostać rozszerzony przez system w czasie wykonywania do dłuższego ciągu, a to rozszerzenie dotyczy całkowitej długości.

§ Począwszy od systemu Windows 10, wersja 1607, MAX_PATHograniczenia zostały usunięte z typowych funkcji plików i katalogów Win32. Musisz jednak wyrazić zgodę na nowe zachowanie.

phuclv
źródło
Dzięki, David napisał pierwszy i zadziałało, ale uwzględniłeś zasoby, więc +1.
Jan
1
Podobnym rozwiązaniem jest użycie skrzyżowania. Sprawdź schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
Urhixidur
1
Wolałbym również użyć tej odpowiedzi. W ten sposób możesz przechowywać swoje pliki tam, gdzie chcesz, i nadal możesz nazwać je tak, jak chcesz. Ponadto po skopiowaniu ich na urządzenie najprawdopodobniej nie będzie to przeszkadzało w głupim ograniczeniu systemu Windows, ponieważ mają one bardzo płaską hierarchię plików i mogą nawet nie używać nazwy pliku bezpośrednio (np. IPhone / iPad / iEtc używa hex znaki dla nazw plików i odsyłacze do pliku indeksu).
phyrfox,
Maksymalna liczba znaków w nazwie pliku to 255 znaków, a nie 256
Edd
@Edd 255 znaków + zakończenie zerowe
phuclv
0

System Windows 7 umożliwia zapisywanie nazw plików dłuższych niż 256 znaków, w tym nazw ścieżek, i można je również łatwo uzyskać. Jedyną niewielką trudnością, na jaką możesz natknąć się, jest skopiowanie ich z jednego miejsca do drugiego, ale pojawi się wyskakujące okienko z pytaniem, czy chcesz zmienić nazwę pliku, a nie skopiować plik lub zapisać go takim, jaki jest. Zawsze zapisuję to tak, jak jest i nigdy nie miałem żadnych problemów. Prawdopodobnie mam kilkaset nazw plików, które przekraczają limit.

Gburowaty
źródło
nie, nie pozwoli ci zapisywać plików dłuższych niż 255 znaków, ponieważ jest to limit systemu plików
phuclv
ścieżka może być jednak nieco dłuższa (lub znacznie dłuższa po usunięciu ograniczenia MAX_PATH)
phuclv