Domovská » jak » Proč je hlášení systému Windows tuto složku příliš dlouhé na kopírování?

    Proč je hlášení systému Windows tuto složku příliš dlouhé na kopírování?

    Pokud pracujete s Windows dostatečně dlouho, zvláště se soubory a soubory, které mají dlouhé názvy, narazíte na bizarní chybu: Systém Windows hlásí, že cesta ke složce nebo název souboru je příliš dlouhá, než se přesune na nový cíl nebo dokonce odstraní. O co jde?

    Hej 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, protože DOS podporuje dlouhé názvy souborů, ale Windows tvrdí, že cesta je příliš dlouhá? Proč se to děje?

    Upřímně,

    Pan dezorganizovaný

    Problém, se kterým narazí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 dlouhých názvů souborů (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 systému MS-DOS v systému Windows 95. Nový systém LFN umožňoval jmenování souborů a adresářů až do 255 znaků. Toto bylo vítané rozšíření předchozího systému názvů souborů, obvykle volané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ž jen několik bolesti hlavy, které se snažily dostat novější LFN a starší SFN, aby si navzájem 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).

    Máme však dlouhou cestu od poloviny devadesátých let 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é, že byste se nikdy nesetkali s konfliktem délky názvu souboru, jako jsme my běžili zpět do DOS / Windows 95 dnů. To znamená, že jsme se stále objevili v škytavku, 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 spuštěn? Nemůžeme obviňovat systém souborů NTFS (souborový systém, který využívá 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.

    Tam, kde se všechno rozpadá, je umělá restrikce Windows na vrcholu 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. Má tedy potenciální skutečný MAX_PATH 256 znaků, např. C: \ vaše-256-znaková cesta \.

    Takže, co se stalo, když jste počítač vyčistili, je, že máte adresář s již dlouhou cestou (buď 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íce tyto adresáře 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.

    Teď už možná myslíš "Ach-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, skončili byste tak, že byste to tak nestojí za to. 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 bez vytvoření obrovského nepořádek.

    Kde tě to opustí? 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 vedení, a pak název samotný je úplný název článku + článek vedl, bylo by snadné zasáhnout nebo překročit hodnotu MAX_PATH s jediným uložením. Úpravou těch 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.

    Máte-li obrovský počet souborů s dlouhou cestou a nechcete je všechny upravovat (nebo pokud chcete vymazat tuna starých adresářů, které jsou pro Windows příliš dlouhé, když jsou omezeny proměnnou MAX_PATH), je zde práce s příkazovým řádkem. 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 jednat s delšími názvy cest. Aplikace Windows API má proto funkci pro práci s extrémně dlouhými cestami.

    Abyste využili výhody tohoto rozhraní API a používali nástroje pro příkazové řádky na vašich neprázdných složkách / názvech souborů, jednoduše je třeba přidat název adresáře 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-long-folder-jméno-schéma \

    na:

    rmdir \\? \ c: \ documents \ some-really-super-long-folder-jméno-schéma \

    Klíčem je přidání \\? \ \ část před spuštěním 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ů (který může jasně podporovat delší cestu). Jako vždy buďte opatrní v příkazovém řádku, abyste se neúmyslně smazali soubory nebo adresáře, které jste chtěli nechat neporušený.

    Pokud je váš přehled tohoto problému zvědavý, rozhodně se do tohoto článku zapojte z knihovny Microsoft Developer Network, pojmenování souborů, cest a mezery, kde najdete další informace o tom, co se děje pod kapotou.


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