22Aug

Proč je hlášení systému Windows o této složce příliš dlouhé?

click fraud protection

Pokud pracujete s Windows dostatečně dlouhou dobu, zejména se složkami a soubory s dlouhými názvy, narazíte na bizarní chybu: Systém Windows hlásí, že cesta k souboru nebo název souboru je příliš dlouhá, než se přesune na nový cíl nebo dokonce odstraní.O co jde?

Hey How-To Geek!

Takže druhý den jsem reorganizoval některé soubory na svém počítači, vytvářel složky, takové věci. Pak, když jsem přemístil nějaké soubory do složky, dostanu zprávu, že výsledná cesta složky bude příliš dlouhá.Byl jsem zmatený.Vím, že každý OS od DOSu podporuje dlouhé názvy souborů, ale Windows tvrdí, že cesta je příliš dlouhá?Proč se to děje?

Upřímně,

Mr. Disorganized

Problém, se kterým se setkáváte, je nešťastná křižovatka dvou systémů, která v takových případech způsobuje chybu. Abychom přesně pochopili, odkud pochází chyba, musíme se ponořit do historie Long Filenames( LFN) a jak Windows s nimi komunikuje, než se ponoříme do řešení.

Dlouhé názvy souborů byly představeny prostřednictvím základní architektury MS-DOS v systému Windows 95. Nový systém LFN umožnil název souboru a adresáře až do 255 znaků.Toto bylo vítané rozšíření předchozího systému názvů souborů, obvykle nazývaného 8.3 název souboru, protože název byl omezen na osm znaků a třímístné rozšíření, ale také známé jako Short Filename( SFN).Jak si dokážete představit, v té době se stále nacházely spousty aplikací založených na DOSu a bylo víc než pár bolesti hlavy, které se snažily dostat novější LFN a starší SFN, aby si hráli pěkně.Pokud jste někdy narazili na starší disketu nebo CD-ROM s podivně zkrácenými soubory( podobně jako abcdef ~ 1.txt), tento název souboru byl snížen o některé starší aplikace používající SFN z nějaké delší a nepodporované LFN( jako abcdefghijk.txt).

instagram viewer

Jsme dlouhá cesta od poloviny devadesátých let 20. století a celá věc Long Filename je( z větší části) pevně vymačkaná.Pokud používáte verzi systému Windows za posledních 10 let, pravděpodobně se ani nepodaří narazit na konflikt délky názvu souboru, jako jsme se používali ke spuštění v DOS / Windows 95 dnech. To znamená, že se stále objevují škytavka, jak jste objevili s projektem vyčištění disku. Ale proč?Pokud systém souborů Windows Long Filename podporuje složky a názvy souborů až do 255 znaků na jednu komponentu, do jaké zdi jste narazili? Nemůžeme obviňovat systém souborů NTFS( souborový systém, který používá velká většina moderních počítačů Windows), protože systém souborů NTFS podporuje řetězování složek a názvů souborů až do celkové délky 32 767 znaků.To daleko přesahuje typickou strukturu adresářů, kterou by někdy někdo potřeboval.

Kde se všechno rozpadá, je umělá restrikce Windows na horní straně systému LFN / NTFS: proměnná MAX_PATH.Proměnná MAX_PATH určuje, že úplná struktura adresářů v systému Windows nesmí překročit 260 celkových znaků, včetně písmena jednotky, dvojtečky, zpětného lomítka a nulové vůle na konci. Proto máte pouze potenciální skutečný MAX_PATH 256 znaků, např. C: \ vaše-256-znaková cesta \ .

Takže co se stalo, když jste vyčistili počítač, je, že máte adresář s již dlouhou cestou( ať už proto, že názvy složek byly dlouhé, jména souborů byly dlouhé nebo oba) a když jste se pokoušeli přesunout jeden nebo vícetěchto adresářů do jiného adresáře s dlouhou cestou, celková délka názvu cesty překročila limit 260 znaků uložený proměnnou MAX_PATH.

Nyní můžete myslet "Ah-hah! Prostě změníme proměnnou MAX_PATH a vyřešíme problém! "Bohužel, není to tak jednoduché.Nejen, že proměnná MAX_PATH je v podstatě pevně zakódovaná do systému Windows, ale i když jste prošel obrovským potížím s její změnou, tak byste skončili tak, že byste to tak moc nestačili. Příliš mnoho aplikací očekává, že proměnná cesty je to, co již systém Windows již dlouho určil. Nemůžeme jen projít změnou, aniž bychom vytvořili obrovský nepořádek.

Kde vás opouští?Nejjednodušším řešením je pouze upravit údaje o cestách. Například pokud máte tunu uložených článků, kde aplikace / rozšíření, které jste použili k jejich uložení z webu, vytvořili adresář, který byl plným názvem článku + článek o původu, a pak samotný název souboru je úplný názevčlánku + článku o vedení, bylo by snadné zasáhnout nebo překročit hodnotu MAX_PATH s jediným uložením.Úprava těchto obrovských názvů složek a článků až po rozumnější velikost je snadný způsob, jak tento problém vyřešit.

Pokud máte obrovský počet souborů s dlouhou cestou a nechcete je upravovat všechny( nebo pokud chcete smazat tunu starých adresářů, které jsou příliš dlouhé pro Windows, aby se vypořádali s tím, Proměnná MAX_PATH), existuje kolem příkazového řádku. I když je systém Windows omezen proměnnou MAX_PATH, inženýři systému Windows si uvědomili, že by existovaly situace, kdy by uživatelé museli vypořádat se s delšími názvy cest. Jako takové má rozhraní API systému Windows funkci pro práci s extrémně dlouhými cestami.

Chcete-li využít tohoto rozhraní API a používat nástroje příkazového řádku na vašich neprázdných složkách / názvech souborů, musíte jednoduše přidat název adresáře s několika dalšími znaky. Například pokud byste měli obrovskou adresářovou strukturu, kterou jste chtěli smazat( ale při chybě obdrželi chybu vzhledem k délce cesty), můžete změnit příkaz z:

rmdir c: \ documents \ some-really-super-dlouhý adresář-název schématu \

do:

rmdir \\? \ c: \ documents \ some-really-super-long-folder-název-schéma \

Klíčem je přidání \\?před začátkem cesty souboru;to instruuje Windows, aby ignoroval omezení uložená proměnnou MAX_PATH a interakci s cestou, kterou jste právě dodali, dodanou / chápanou přímo systémem podkladových souborů( což může jasně podporovat delší cestu).Jako vždy dbejte na příkazovém řádku opatrně, abyste se neúmyslně smazali soubory nebo adresáře, které jste chtěli nechat neporušený.

Pokud je náš přehled tohoto problému zvědavý, určitě se podívejme do tohoto článku z knihovny Microsoft Developer Network, Pojmenování souborů, tras a jmenných prostorů, kde najdete další informace o tom, co se děje pod kapotou.

Máte naléhavou technologickou otázku? Napište nám email na adresu [email protected] a uděláme vše pro to, abychom odpověděli.