22Aug

Prečo je hlásenie systému Windows túto zložku príliš dlho na kopírovanie?

click fraud protection

Ak pracujete s Windows dosť dlho, hlavne s priečinkami a súbormi s dlhými názvami, narazíte na bizarnú chybu: systém Windows oznámi, že cesta k priečinku alebo názov súboru je príliš dlhá na presun na nový cieľ alebo dokonca na vymazanie, Aká je dohoda?

Hej Ako na to Geek!

Takže druhý deň som bol reorganizáciou niektorých súborov na svojom počítači, vytváraním priečinkov, takýchto vecí.Potom, keď som presunul nejaké súbory do priečinka, dostanem správu, v ktorej sa uvádza, že výsledná cesta k priečinku bude príliš dlhá.Bol som zmätený.Viem, že každý OS od DOS podporuje Long Filenames, ale Windows tvrdí, že cesta je príliš dlhá?Prečo sa to deje?

úprimne,

pán dezorganizovaný

Problém, s ktorým narazíte, je nešťastnou križovatkou dvoch systémov, ktoré v takýchto prípadoch spôsobujú chybu. Aby sme presne pochopili, odkiaľ pochádza chyba, musíme sa ponoriť do histórie dlhých názvov súborov( LFN) a ako Windows s nimi komunikuje pred tým, ako sa ponoríme do riešení.

Dlhé názvy súborov boli zavedené prostredníctvom základnej architektúry MS-DOS v systéme Windows 95. Nový systém LFN umožnil mená súborov a adresárov až do 255 znakov. Bola to vítaná expanzia predchádzajúceho systému názvov súborov, zvyčajne nazývaného 8.3 názov súborov, pretože názov bol obmedzený na osem znakov a trojmiestne rozšírenie, ale tiež známe ako Short Filename( SFN).Ako si viete predstaviť, vtedy bolo stále veľa aplikácií založených na DOS a bolo viac ako niekoľko bolesti hlavy, ktoré sa snažili dostať novšie LFN a staršie SFN, aby si navzájom dobre zahrali. Ak ste niekedy narazili na staršiu disketu alebo CD-ROM so zvláštne skrátenými súbormi( podobne ako abcdef ~ 1.txt), tento názov súboru bol zredukovaný niektorou SFN-starou aplikáciou z dlhšieho a nepodporovaného LFN( napríklad abcdefghijk. TXT).

instagram viewer

Sme ďaleko od polovice deväťdesiatych rokov 20. storočia a celá vec dlhého súboru je( z väčšej časti) pevne vyrezaná.Ak máte v prevádzke verziu systému Windows za posledných 10 rokov, pravdepodobne sa nikdy nedarí naraziť na konflikt dĺžky názvu súboru, aký sme používali na spúšťanie v dňoch DOS / Windows 95.Znamená to, že sme sa stále stretli so škytavkami, ako ste zistili s projektom vyčistenia disku. Ale prečo? Ak systém Windows Long Filename podporuje priečinky a názvy súborov až do 255 znakov na komponent, na akú stenu narazíte? Nemôžeme obviňovať systém súborov NTFS( súborový systém, ktorý využíva drvivá väčšina moderných počítačov so systémom Windows), pretože NTFS bude podporovať reťazenie priečinkov a názvov súborov až po celkovú dĺžku cesty 32 767 znakov. To ďaleko prevyšuje typickú štruktúru adresárov, ktorú by väčšina používateľov potrebovala.

Kde sa všetko rozpadá, je to umelé obmedzenie Windows stohy na vrchole systému LFN / NTFS: premenná MAX_PATH.Premenná MAX_PATH špecifikuje, že úplná štruktúra priečinkov v systéme Windows nesmie prekročiť celkový počet 260 znakov vrátane písmena jednotky, dvojbodky, spätného lomka a nulového odporu na konci. Preto máte len potenciálny skutočný MAX_PATH 256 znakov, napr. C: \ vaše-256-znaková cesta \ .

Takže čo sa stalo pri čistení počítača je to, že máte adresár s už dlhou cestou( buď preto, že názvy priečinkov boli dlhé, názvy súborov boli dlhé alebo obidve) a keď ste sa pokúsili presunúť jeden alebo viacz týchto adresárov do iného adresára s dlhou cestou, celková dĺžka názvu cesty prekročila limit 260 znakov uložený premennou MAX_PATH.

Teraz môžete premýšľať "Ach-hah! Jednoducho zmeníme premennú MAX_PATH a vyriešime problém! "Bohužiaľ, nie je to tak jednoduché.Nielenže je premenná MAX_PATH v podstate pevne zakódovaná do systému Windows, ale aj keď ste prešli obrovským problémom s jej zmenou, skončili by ste tým, že by ste to tak moc nenašli. Príliš veľa aplikácií očakáva, že premenná cesty bude tým, čo systém Windows dlho určil. Nemôžeme ísť len zmeniť to bez toho, aby sme vytvorili obrovský neporiadok.

Kde vás opúšťa? No, najjednoduchším riešením je len upraviť údaje o trase. Napríklad, ak máte tonu uložených článkov, kde aplikácia / rozšírenie, ktoré ste použili na ich uloženie z webu, vytvorili adresár, ktorý bol plným názvom článku + vedúci článku a potom samotný názov súboru je úplný názovčlánku + vedenie článku, bolo by jednoduché dosiahnuť alebo prekročiť hodnotu MAX_PATH s jedným uložením.Úpravou týchto obrovských názvov priečinkov a článkov až po rozumnejšiu veľkosť je jednoduchý spôsob, ako problém vyriešiť.

Ak máte obrovský počet súborov s dlhou cestou a nechcete ich upravovať všetky( alebo ak chcete odstrániť tonu starých adresárov, ktoré sú príliš dlhé na to, aby sa Windows vyrovnal, keď je obmedzenýPremennej MAX_PATH), je tu okolo príkazového riadku. Aj keď je systém Windows obmedzený premennou MAX_PATH, inžinieri systému Windows si uvedomili, že by existovali situácie, keď by používatelia museli riešiť dlhšie názvy ciest. Rozhranie API systému Windows má preto funkciu na riešenie extrémne dlhých ciest.

Aby ste využili výhody tohto API a použili nástroje na príkazový riadok na vaše neprávne zložky / názvy súborov, jednoducho musíte pridať názov adresára pomocou niekoľkých ďalších znakov. Napríklad, ak ste mali obrovskú štruktúru adresárov, ktorú ste chceli odstrániť( ale pri chybe dostali chybu z dôvodu dĺžky cesty), môžete zmeniť príkaz z:

rmdir c: \ documents \ some-really-super-long-folder-name-scheme \

do:

rmdir \\? \ c: \ documents \ some-really-super-long-folder-name-scheme \

Kľúčom je pridanie \\?pred začiatkom cesty k súboru;to nariaďuje systému Windows, aby ignorovala obmedzenia uložené premennou MAX_PATH a interagovala s cestou, ktorú ste práve dodali, dodanú / chápanú priamo systémom podkladových súborov( ktorý môže jednoznačne podporiť dlhšiu cestu).Ako vždy, buďte opatrní v príkazovom riadku, aby ste sa vyhli náhodnému vymazaniu súborov alebo adresárov, ktoré ste chceli nechať neporušené.

Ak náš zhrnutie tohto problému ste zvedaví, rozhodne sa do tohto článku zapojte z knižnice Microsoft Developer Network, Pomenovanie súborov, ciest a menných priestorov, kde nájdete viac informácií o tom, čo sa deje pod kapotou.

Máte naliehavú technickú otázku? Napíšte nám email na adresu [email protected] a urobíme všetko pre to, aby sme vám odpovedali.