22Aug
Jei dirbate su "Windows" pakankamai ilgai, ypač su ilgų pavadinimų aplankais ir failais, jums teks susidurti keista klaida: "Windows" praneša, kad aplanko kelias ar failo vardas per ilgas, norint pereiti prie naujo tikslo arba netgi ištrinti. Koks susitarimas?
"Ei", "How-To Geek"!
Taigi kitą dieną reorganizavau kai kuriuos failus į savo kompiuterį, sukūriau aplankus, tokius dalykus. Tada, kai kai kuriuos failus įvediau į aplanką, gaunu pranešimą, nurodydamas, kad gautas aplanko kelias per ilgas. Aš buvau sutrikęs.Žinau, kad kiekviena operacinė sistema, kai DOS palaiko ilgas failų pavadinimus, tačiau "Windows" teigia, kad kelias yra per ilgas? Kodėl taip atsitiko?
Nuoširdžiai,
p. Neorganizuotas
Problema, su kuria susiduriate, yra nepalankus dviejų sistemų susikirtimas, kuris tokiais atvejais sukelia klaidą.Norėdami tiksliai suprasti, iš kur kilo klaida, turime įsiskverbti į ilgų failų pavadinimų( LFN) istoriją ir tai, kaip "Windows" sąveikauja su jais, prieš pradėdami ieškoti sprendimų.
Long Filenames buvo įdiegta per pagrindinę MS-DOS architektūrą, sistemoje Windows 95. Nauja LFN sistema leido failų ir katalogų pavadinimus, kurių simboliai buvo ne didesni kaip 255.Tai buvo sveikintina ankstesnės failų pavadinimo sistemos plėtra, kuri paprastai vadinama 8.3 filename, nes pavadinime buvo tik aštuoni simboliai ir trijų skaitmenų plėtinys, bet taip pat žinomas kaip trumpas failo vardas( SFN).Kaip jūs galite įsivaizduoti, tuo metu vis dar buvo daug DOS pagrįstų programų, ir buvo daugiau nei keletas galvos skausmų bandant gauti naujesnius LFNs ir senus SFN, kad jie galėtų puikiai žaisti vieni su kitais. Jei kada nors susidūrėte su senesniu disku arba kompaktiniu disku su neįprastai sutrumpintomis failais( pvz., Abcdef ~ 1.txt), kai kurios senesnės programos, naudojančios SFN, iškirpė kai kurias ilgesnes ir nepalaikomas LFN( pvz., Abcdefghijk).txt).
Mes dar ne viskas nuo dešimtojo dešimtmečio vidurio, o visas "Long Filename" dalykas( iš esmės) yra tvirtai išvalytas. Jei per pastaruosius 10 metų naudojate "Windows" versiją, tikriausiai niekada negalėsite susidurti su failo vardo ilgio konfliktu, kaip mes sugebėjome sugrįžti į DOS / Windows 95 dienas. Tuo tarpu mes vis dar susiduriame su žagsėjimais, kaip aptikote savo disko valymo projektu. Bet kodėl? Jei "Windows Long Filename" sistema palaiko kiekvieno komponento aplankus ir failų pavadinimus iki 255 simbolių, kokią sieną naudojate? Negalime kaltinti NTFS( failų sistemos, kurią naudoja dauguma šiuolaikinių "Windows" mašinų), nes NTFS palaiko aplankų ir failų pavadinimų susiejimą iki viso 32767 simbolių.Tai gerokai viršija įprastą katalogų struktūrą, kurią kada nors reikės vartotojams.
Kur viskas suskaido, yra dirbtinis apribojimas "Windows" rinkiniams, esantiems LFN / NTFS sistemos viršuje: MAX_PATH kintamasis. Keičiamasis MAX_PATH nurodo, kad užbaigta katalogų struktūra "Windows" negali viršyti 260 visų simbolių, įskaitant disko raidę, dvitaškį, grįžtamąjį brūkšnį ir nulinį atbulinės eigos pabaigą.Taigi jūs tik potencialus MAX_PATH potencialas yra 256 simbolių, pvz., C: \ jūsų 256 simbolių kelias \ .
Taigi, kas nutiko, kai kompiuteris buvo valomas, yra tas, kad jūs turėjote katalogą su jau ilgą kelią( arba todėl, kad aplankų pavadinimai buvo ilgi, failų pavadinimai buvo ilgi arba abu) ir bandėte perkelti vieną ar daugiauiš tų katalogų į kitą katalogą su ilgais keliais, bendras kelio pavadinimo ilgis viršijo 260 simbolių limitą, nustatytą kintamuoju MAX_PATH.
Dabar galite galvoti "Ah-hah! Mes tiesiog pakeisime MAX_PATH kintamąjį ir išsprękime problemą! "Deja, tai nėra taip paprasta. Ne tik MAX_PATH kintamasis yra iš esmės kietai koduotas į "Windows", bet net jei jūs išgyvenote milžinišką vargo keisti jį, jūs galų gale nutraukti taip daug nebūtų verta. Pernelyg daug programų tikisi, kad kelio kintamasis yra tai, ką "Windows" jau seniai nurodė.Mes negalime tiesiog pereiti keisti, nesukuriant didžiulės netvarka.
Kur tai palieka tave? Na, paprasčiausias sprendimas yra tiesiog redaguoti kelio duomenis. Pavyzdžiui, jei turite daugybę išsaugotų straipsnių, kuriuose programa / plėtinys, kurį naudojote išsaugoti juos iš žiniatinklio, sukūrė katalogą, kuris buvo pilnas straipsnio pavadinimas + straipsnio pavadinimas, o pats failo vardas yra visas pavadinimasstraipsnis + straipsnis, tai būtų labai paprasta pasiekti ar viršyti MAX_PATH su vienu taupymu.Šių didžiulių aplankų ir straipsnių pavadinimų redagavimas iki tinkamesnio dydžio yra paprastas būdas išspręsti šią problemą.
Jei turite didžiulį ilgų kelių failų skaičių ir nenorite jų redaguoti( ar norite ištrinti toną senų katalogų, kurie yra pernelyg ilgi, kad "Windows" galėtų susidoroti su apribojimaisMAX_PATH kintamasis), yra aplinkoje komandų eilutės. Nors "Windows" ribojamas MAX_PATH kintamasis, "Windows" inžinieriai suprato, kad būtų situacijų, kai vartotojams reikės elgtis su ilgesniais kelio pavadinimais. Taigi, "Windows" API funkcija yra susijusi su labai ilgais keliais.
Kad galėtumėte pasinaudoti šia API ir naudoti komandinės eilutės įrankius savo nepatogiems aplankams / failų pavadinimams, tiesiog reikia pridėti katalogo pavadinimą keliais papildomais simboliais. Pavyzdžiui, jei jūs turėjote didelę katalogų struktūrą, kurią norėjote ištrinti( bet bandymo metu gavote klaidą dėl jos kelio ilgio), galite pakeisti komandą iš:
rmdir c: \ documents \ some-really-super-long-folder-name-schema \
į:
rmdir \\? \ c: \ documents \ some-really-super-long-folder-name-scheme \
Raktas yra tai, kad yra \\? \ dalisprieš pradedant failo kelią;tai įpareigoja Windows ignoruoti apribojimus, kuriuos nustatė MAX_PATH kintamasis, ir sąveikauti su pateiktu tiesioginiu būdu pateiktu / suprantamu pagrindu esančių failų sistemos( kuris gali aiškiai paremti ilgesnį kelią) sąveika. Kaip visada būkite atsargus komandinėje eilutėje, kad būtų išvengta netyčinio ištrynimo failų ar katalogų, kuriuos ketinate palikti nepažeistą.
Jei mūsų apžvalga apie šį klausimą jums įdomu, tikrai norėtumėte sužinoti apie šį straipsnį iš "Microsoft Developer Network" bibliotekos "Failų pavadinimai", "Pėdos" ir "Namespaces", jei norite gauti daugiau informacijos apie tai, kas vyksta po gaubtu.
Ar turite neatidėliotino techninio klausimo? Užsirašykite mums adresu [email protected] ir mes padarysime viską, kad jam atsakytume.