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
Probleem, millega te satute, on kahe süsteemi õnnetu lõikumine, mis sellistel juhtudel annab viga. Selleks, et täpselt teada saada, kus tõrge ilmneb, peame minema pikkade failinimede (LFN) ajalooga ja kuidas Windowsiga nendega suhelda, enne kui me jõuame lahendusse.
Windows 95-s on kasutusele võetud pikad failinimed läbi aluseks oleva MS-DOS-i arhitektuuri. Uus LFN-süsteem lubas failide ja katalooginimede puhul kuni 255 tähemärki. See oli eelmise failinimesüsteemi tervitatav laiendamine, mida tavaliselt nimetatakse 8.3 filenameerimiseks, kuna nimeks oli vaid kaheksa märki ja kolmekohaline laiendus, kuid tuntud ka kui lühike failinimi (SFN). Nagu võite ette kujutada, oli sellel ajal veel palju DOS-põhiseid rakendusi ja seal oli rohkem kui paar peavalu, üritades saada uuemad LFN-id ja pärandfirmad SFN-idel üksteisega toredaks mängimiseks. Kui olete kunagi varem näinud mõnda vanemat kettale või CD-le, millel on imelikult kärbitud faile (näiteks abcdef ~ 1.txt), mõne SFN-i kasutava pärandprogrammi abil mõne pikema ja toetamata LFN-i (näiteks abcdefghijk) abil selle failinimi. txt).
Kuid meil on pikk tee juba 1990. aastate keskpaigast ja kogu Long Filename'i asi (enamasti) on kindlalt korrastatud. Kui olete viimase kümne aasta jooksul Windowsi versiooni kasutanud, pole tõenäoliselt kunagi kogenud failinime pikkuse konflikti, nagu me kasutasime DOS / Windows 95 päeva jooksul tagasi. Sellest hoolimata sattusime end ikka veel luksumine, nagu avastasite oma kettade puhastamise projekti. Aga miks? Kui Windowsi pikk filename süsteem toetab kaustu ja faili nimesid kuni 255 tähemärki iga komponendi kohta, millist seinot sa kasutad? Me ei saa süüdistada NTFS-i (failisüsteemi, mida enamus kaasaegseid Windowsi masinaid kasutab), sest NTFS toetab kaustade ja failinimede sidumist kokku kuni 32 767 tähemärki. See ületab kaugelt tüüpilise kataloogikorralduse, mida enamik kasutajaid kunagi vaja peaks.
Kui see kõik laguneb, on LFN / NTFS-süsteemi peal olev kunstlik piirang Windowsi korpused: muutuja MAX_PATH. Muutuja MAX_PATH määrab kindlaks, et Windowsi täielik kataloogistruktuur ei tohi olla üle 260 tähemärki, kaasa arvatud draivitäht, käärsool, tagasilöögilangus ja lõpuks tühine tagasilöök. Seega on potentsiaalset MAX_PATH potentsiaalist ainult 256 tähemärki, nt C: your-256-märgi tee.
Nii, mis juhtus arvuti puhastamisel, on see, et teil oli juba pikk tee (kas kataloogide nimed olid pikad, failinimed olnud pikad või mõlemad) ja kui üritasite ühe või mitu need kataloogid teise pika tee juurde kuuluva kataloogi, ületas tee nime kogupikkus muutuja MAX_PATH määratud 260 tähemärgipiiri.
Nüüd võite mõelda "Ah-hah! Me lihtsalt muudame muutuja MAX_PATH ja lahendame probleemi! "Alas, see pole nii lihtne. Muutuja MAX_PATH ei ole mitte ainult Windowsis põhjalikult kodeeritud, vaid isegi siis, kui olete läbi selle tohutu probleemi muutnud, võite lõpuks rikkuda nii palju, et see pole seda väärt. Liiga palju rakendusi eeldavad, et tee muutuja on see, mida Windows on juba pikka aega määranud. Me ei saa lihtsalt ümber minna, ilma et tekiks tohutut segadust.
Kust see sulle jätab? Nüüd on lihtsaim lahendus teeandmete redigeerimine. Näiteks kui teil on salvestatud artiklit tonni kohta, kus teie veebis salvestatud rakendus / laiendus loonud kataloogi, mis oli artikli täispealkiri + artiklit, siis on faili nimi ise täielik pealkiri artikli + artiklist, oleks tõesti lihtne koputada või ületada MAX_PATH ühe salvestusega. Selle tohutu kausta- ja artiklite pealkirjade muutmine mõistlikumaks muutmiseks on lihtne probleemi lahendamiseks.
Kui teil on pikk tee koos hulga faile ja te ei soovi neid kõik muuta (või kui soovitekustutada tonne vanu katalooge, mis on Windowsi jaoks liiga pikad, kui seda piirab MAX_PATHi muutuja), on käsurea töö ümber. Isegi kui muutuja MAX_PATH piirab Windowsi, on Windowsi insenerid aru saanud, et oleksid olukorrad, kus kasutajad peaksid tegelema pikemate tee nimedega. Sellisena on Windows API-l funktsioon äärmiselt pikkade teede käsitlemiseks.
Selle API kasutamise eeliseks ja käsurea tööriistade kasutamiseks oma koormatud kaustades / failinimedes peate lihtsalt lisama katalooginime mõne lisatähega. Näiteks kui teil oli tohutu kataloogistruktuur, mida soovisite kustutada (kuid tegu proovis teekonna pikkuse tõttu vea tõttu), võite käsku muuta järgmiselt:
rmdir c:documentssome-really-super-long-folder-name-scheme
:
rmdir \?c:documentssome-really-super-long-folder-name-scheme
Võti on
?
osa enne faili asukoha algust; see juhib Windowsit, et ignoreeriks MAX_PATHi muutuja poolt kehtestatud piiranguid ja suhelda just pakutava teega, mida pakkus / mõistis otse aluseks olev failisüsteem (mis võib selgelt pikemat teed toetada).Nagu alati, käituge ettevaatlikult käsureale, et vältida failide või kataloogide juhusliku kustutamist, mida kavatsesite puutumata jätta.
Kui meie ülevaade sellest teemast on teile huvitav, siis kindlasti kaevake see artikkel Microsofti arendajavõrgustiku teeki, nimede failide, teekondade ja nimeruumide hulgast, et saada rohkem teavet selle kohta, mis toimub kapoti all.
Kas teil on aktuaalne tehniline küsimus? Võta meile email at [email protected] ja me teeme kõik selleks, et sellele vastata.