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

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

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

Video: Prečo je hlásenie systému Windows túto zložku príliš dlho na kopírovanie?
Video: Create A FREE CPA AFFILIATE MARKETING WEBSITE In 10 Mins That Earns $800 Daily With FREE Traffic! - YouTube 2024, Apríl
Anonim
Ak pracujete s Windows dostatočne dlho, hlavne pri priečinkoch a súboroch 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á, aby sa presunul na nový cieľ alebo dokonca odstrániť. Aká je dohoda?
Ak pracujete s Windows dostatočne dlho, hlavne pri priečinkoch a súboroch 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á, aby sa presunul na nový cieľ alebo dokonca odstrániť. Aká je dohoda?

Hey How-To Geek!

So the other day, I was reorganizing some files on my computer, creating folders, that kind of stuff. Then, when I was moving some files into a folder, I get a message, stating that the resulting folder path would be too long. I was confused. I know that every single OS since DOS supports Long Filenames, yet Windows claims that the path is too long? Why does this happen?

Sincerly,

Mr. Disorganized

Problém, s ktorým narazíte, je nešťastným priesečníkom 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 tu 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).

Sme však ď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: napíšte-256-charakter-cesta.

Takže čo sa stalo pri čistení počítača je to, že máte adresár s už dlhou cestou (či už 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 viac tieto adresáre 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ám to opustí? 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 chcetevymazať tona starých adresárov, ktoré sú príliš dlhé na to, aby sa Windows vyrovnal, keď je obmedzená premennou MAX_PATH), existuje príkazový riadok. 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 mohli využívať výhody tohto API a používať nástroje na príkazovom riadku na vaše neprenosné 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:documentssome-really-super-long-folder-name-scheme

na adresu:

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

Kľúčom je pridanie

?

časť 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 je náš prehľad tohto problému zvedavý, rozhodne sa do tohto článku zapojte z knižnice Microsoft Developer Network, nazvanej Súbory, cesty a menné priestory, 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.

Odporúča: