22Aug
Ako radite s Windowsom dovoljno dugo, naročito s mapama i datotekama s dugim imenima, pokrenut ćete bizarnu pogrešku: Windows će izvijestiti da je put mape ili naziv datoteke predug za prelazak na novo odredište ili čak izbrisati, Kakav je posao?
Hej Kako-To Geek!
Dakle, neki dan sam reorganizirala neke datoteke na mojem računalu, stvarajući mape, takve stvari. Zatim, kad sam premjestio neke datoteke u mapu, dobivam poruku, navodeći da će prolazna mapa putanja biti preduga. Bio sam zbunjen. Znam da svaki pojedini OS od DOS podržava Long Filenames, ali Windows tvrdi da je put predug. Zašto se to dogodi?
S poštovanjem,
G. Disorganized
Problem s kojim se suočavate je nesretno raskrižje dvaju sustava koji u takvim slučajevima donose pogrešku. Da bismo shvatili točno odakle dolazi pogreška, moramo utvrditi povijest Long Filenames( LFN) i kako Windows komunicira s njima prije nego se probudimo u rješenja.
Long Filenames su uvedene kroz temeljnu MS-DOS arhitekturu u sustavu Windows 95. Novi LFN sustav omogućio je nazive datoteka i direktorija do 255 znakova. Ovo je bilo dobrodošlo proširenje prethodnog sustava naziva datoteke, obično pod nazivom 8.3 filenaming jer je ime ograničeno na osam znakova i tri znamenke proširenja, ali također poznat kao kratki naziv datoteke( SFN).Kao što možete zamisliti, još uvijek je bilo mnogo DOS-ovih aplikacija, a bilo je više od nekoliko glavobolja koje pokušavaju dobiti novije LFN-ove i naslijeđene SFN-ove da se igraju lijepo jedno s drugim. Ako ste ikad naišli na stariju disketi ili CD-ROM s neobično skraćenim datotekama na njemu( kao što je abcdef ~ 1.txt) taj je naziv datoteke smanjen nekim SFN-ovim naslijeđenom aplikacijom s nekog duljeg i nepodržanog LFN-a( kao što je abcdefghijk.tXT).Međutim, dugo smo od sredine 1990-ih, a cijeli je Long Filename( za veći dio) čvrsto uklonjen. Ako imate verziju sustava Windows u posljednjih 10 godina, vjerojatno nikada nećete naići na sukob duljine datoteke kao što smo se nekad koristili u DOS / Windows 95 danu. To je rekao, još uvijek naletimo na štucanje, kao što ste otkrili sa svojim disk čišćenje projekta. Ali zašto? Ako sustav Long filename sustava Windows podržava mape i nazive datoteka do 255 znakova po komponentama, u kojem se zidu prikazujete? Ne možemo kriviti NTFS( datotečni sustav koji koristi velika većina modernih Windows računala) jer NTFS podržava povezivanje mapa i imena datoteka do ukupne duljine puta od 32.767 znakova. To je daleko veće od tipične strukture direktorija koju bi većina korisnika ikada trebala.
Gdje se sve raspada, to je umjetno ograničenje. Windows se stapa na vrh LFN / NTFS sustava: varijabla MAX_PATH.Varijabla MAX_PATH određuje da kompletna struktura direktorija u sustavu Windows ne smije prelaziti 260 ukupnih znakova, uključujući slovo pogona, dvotočka, obrnuto i nulte prijetnje na kraju. Tako imate samo potencijalni pravi MAX_PATH od 256 znakova, npr. C: \ your-256-character-path \ .
Dakle, ono što se dogodilo prilikom čišćenja vašeg računala jest da ste imali direktorij s već dugom stazom( jer su nazivi mapa bili dugački, nazivi datoteka bili su dugački ili oboje) i kada ste pokušali premjestiti jedan ili višetih direktorija u drugi direktorij s dugim putom, ukupna duljina naziva staze premašila je ograničenje od 260 znakova koje nameće MAX_PATH varijabla.
Sada, možda mislite "Ah-hah! Promijenit ćemo promjenu MAX_PATH i riješiti problem! "" Jao, to nije tako jednostavno. Ne samo da je varijabla MAX_PATH uglavnom teško kodirana u sustavu Windows, ali čak i ako ste prošli kroz ogromnu gnjavažu za mijenjanjem, završili ste razbijanje toliko da to ne bi bilo vrijedno. Previše aplikacija očekuje da će varijabla staze biti ono što je Windows to dugo odredio. Ne možemo se samo mijenjati bez stvaranja ogromne zbrke.
Gdje vas ostaviti? Pa, najjednostavnije rješenje je samo uređivanje podataka o putovanju. Na primjer, ako imate tona spremljenih članaka u kojima je aplikacija / proširenje koje ste koristili za spremanje s weba stvorio direktorij koji je bio puni naslov članka + vodstvo članka, a sam naziv datoteke pun je naslovčlanak + članak, bilo bi vrlo lako pogoditi ili prijeći MAX_PATH s jednom spremom. Uređivanje tih ogromnih naslova mapa i članaka do više razumne veličine jednostavan je način rješavanja problema.
Ako imate ogroman broj datoteka s dugim putom i ne želite ih sve urediti( ili ako želite izbrisati tonu starih direktorija koji su predugo za Windows, kada se ograničavaMAX_PATH varijabla) postoji rad naredbenog retka. Iako Windows ograničava varijabla MAX_PATH, inženjeri sustava Windows shvatili su da će postojati situacije u kojima bi se korisnici trebali baviti duljim nazivima putanja. Kao takav, Windows API ima funkciju za rješavanje ekstremno dugih staza.
Da biste iskoristili prednosti tog API-ja i upotrebljavali alate naredbenog retka na nezgrapnim nazivima mapa / datoteka, jednostavno trebate dodati naziv direktorija s nekoliko dodatnih znakova. Na primjer, ako ste imali veliku strukturu direktorija koju ste željeli izbrisati( ali ste dobili pogrešku zbog dužine puta kada ste ga pokušali), možete promijeniti naredbu iz:
rmdir c: \ documents \ some-stvarno-super-
:
rmdir \\? \ c: \ documents \ neka-stvarno-super-dugo-folder-name-scheme \
Ključ je dodavanje \\? \ porcijeprije početka puta datoteke;to upućuje Windowsu da zanemaruje ograničenja koja nameću varijabla MAX_PATH i interakciju s putom koji ste upravo dobili kao što je isporučen / shvaćen izravno od osnovnog sustava datoteka( što može jasno podržati duži put).Kao i uvijek, pazite na naredbeni redak kako biste izbjegli slučajno brisanje datoteka ili direktorija koje ste namjeravali ostaviti netaknutima.
Ako ste naš pogled na ovaj problem znatiželjni, svakako pročitajte ovaj članak iz knjižnice Microsoftove razvojne mreže, naziva datoteke, putove i prostore za imena, kako biste saznali više o tome što se događa ispod nape.
Imate li pritiskom tehničko pitanje? Pucaj nam e-mail na adresu [email protected] i mi ćemo se potruditi da odgovorimo.