Domača » kako » Zakaj je Windows poročanje te mape predolgo za kopiranje?

    Zakaj je Windows poročanje te mape predolgo za kopiranje?

    Če delate z operacijskim sistemom Windows dovolj dolgo, še posebej z mapami in datotekami z dolgimi imeni, boste naleteli na bizarno napako: Windows bo sporočil, da je pot ali ime datoteke predolgo, da se premakne na nov cilj ali celo izbriše. Kakšen je dogovor?

    Hej How-To Geek!

    Torej neki dan sem reorganiziral nekaj datotek na računalniku, ustvaril mape, tovrstne stvari. Potem, ko sem prenašal nekatere datoteke v mapo, sem dobil sporočilo, v katerem je navedeno, da bo nastala pot do mape predolga. Bil sem zmeden. Vem, da vsak OS, odkar DOS podpira dolga imena datotek, vendar Windows trdi, da je pot predolga? Zakaj se to zgodi?

    Iskreno,

    G. Neorganiziran

    Težava, na katero naletite, je žalostno presečišče dveh sistemov, ki v takih primerih povzročata napako. Da bi natančno razumeli, od kod prihaja napaka, moramo preiskati zgodovino dolgih imen datotek (LFN) in kako Windows komunicira z njimi, preden se podamo v rešitve..

    Dolga imena datotek so bila predstavljena prek osnovne arhitekture MS-DOS v sistemu Windows 95. Novi sistem LFN je dovolil imen datotek in imenikov do 255 znakov. To je bila dobrodošla razširitev prejšnjega sistema imen datotek, ki se običajno imenuje 8.3 filenaming, ker je bilo ime omejeno na osem znakov in trimestno podaljšanje, znano pa je tudi kot ime datoteke (SFN). Kot si lahko predstavljate, je bilo takrat še vedno veliko aplikacij, ki temeljijo na DOS-u, in bilo je več kot nekaj glavobolov, ki so poskušali dobiti novejše LFN-je in starejše SFN-e, da bi se lepo igrali. Če ste kdaj naleteli na starejšo disketo ali CD-ROM z nenavadno skrajšanimi datotekami na njem (kot je abcdef ~ 1.txt), je bilo to ime datoteke izrezano s pomočjo neke starejše aplikacije, ki je uporabljala SFN in je iz neke daljše in nepodprte LFN (kot je abcdefghijk. txt).

    Od sredine devetdesetih let pa smo daleč od tega in celotna stvar Long Filename je (večinoma) trdno izrinjena. Če uporabljate različico operacijskega sistema Windows od zadnjih 10 let, se verjetno nikoli ne boste srečali s konfliktom, ki smo ga uporabili, ko smo se v DOS / Windows 95 dneh uporabljali. Vendar smo še vedno naleteli na kolcanje, kot ste ga odkrili s projektom čiščenja diska. Ampak zakaj? Če sistem Windows 'Long Filename' podpira mape in imena datotek do 255 znakov na komponento, v katero steno ste naleteli? Ne moremo kriviti NTFS (datotečni sistem, ki ga uporablja velika večina sodobnih operacijskih sistemov Windows), saj bo NTFS podpiral vezanje map in imen datotek do skupne dolžine 32.767 znakov. To precej presega tipično strukturo imenikov, ki jo bo potrebovala večina uporabnikov.

    Kjer se vse razpade, je umetna omejitev, ki jo Windows stack na vrhu sistema LFN / NTFS: spremenljivka MAX_PATH. Spremenljivka MAX_PATH določa, da celotna struktura imenikov v operacijskem sistemu Windows ne sme presegati 260 znakov, vključno s črko pogona, dvopičjem, poševnico nazaj in nično povratno zvezo na koncu. Tako imate samo potencialni realni MAX_PATH od 256 znakov, npr. C: pot do 256 znakov.

    Torej, kar se je zgodilo, ko ste čistili računalnik, je, da ste imeli imenik z že dolgo potjo (ker so imena map dolgo, imena datotek so bila dolga ali oboje) in ko ste poskušali premakniti enega ali več imenikov v drug imenik z dolgo potjo, skupna dolžina imena poti je presegla omejitev 260 znakov, ki jo je povzročila spremenljivka MAX_PATH.

    Zdaj lahko razmišljate »Ah-hah! Spremenili bomo spremenljivko MAX_PATH in rešili težavo! ”Žal, ni tako preprosto. Ne samo, da je spremenljivka MAX_PATH v bistvu močno kodirana v operacijski sistem Windows, ampak tudi če bi šli skozi ogromno težav pri njeni spremembi, bi na koncu zlomili toliko, da ne bi bilo vredno. Preveč aplikacij pričakuje, da je spremenljivka poti tisto, kar je Windows že dolgo navedel. Ne moremo samo spremeniti, ne da bi ustvarili ogromno nered.

    Kje vas to pusti? Najpreprostejša rešitev je, da uredite podatke o poti. Na primer, če imate tono shranjenih člankov, kjer je aplikacija / razširitev, ki ste jo uporabili za shranjevanje iz spleta, ustvarila imenik, ki je bil celoten naslov članka + vodilo članka, nato pa je samo ime datoteke poln naslov članka + vodilo članka, bi bilo zelo enostavno zadeti ali preseči MAX_PATH z enim samim shranjevanjem. Urejanje teh ogromnih naslovov map in člankov na razumnejšo velikost je preprost način za odpravo težave.

    Če imate veliko število datotek z dolgo potjo in jih ne želite urediti vse (ali če želite izbriši tona starih imenikov, ki so predolgi, da bi se Windows ukvarjal, ko je omejena s spremenljivko MAX_PATH), je obkrožena ukazna vrstica. Čeprav je Windows omejena s spremenljivko MAX_PATH, so Windowsovi inženirji spoznali, da bodo v okoliščinah, v katerih bodo uporabniki morali obravnavati daljša imena poti. Windows API ima funkcijo za obravnavanje izjemno dolgih poti.

    Da bi lahko izkoristili prednosti tega API-ja in uporabili orodja ukazne vrstice na nezgrešnih imenih map in datotek, morate samo dodati ime imenika z nekaj dodatnimi znaki. Če imate na primer veliko imeniško strukturo, ki ste jo želeli izbrisati (vendar ste prejeli napako zaradi dolžine poti, ko ste jo poskusili), lahko spremenite ukaz iz:

    rmdir c: dokumenti - res-super-dolga-mapa-ime-shema \ t

    do:

    a-res-super-dolga-mapa-ime-shema \ t

    Ključ je dodatek ? \ T pred začetkom poti datoteke; to ukaže Windows, naj ne upošteva omejitev, ki jih povzroča spremenljivka MAX_PATH, in interakcijo s potjo, ki ste jo pravkar posredovali, kot jo dobavlja / razume neposredno sistem osnovnih datotek (ki lahko jasno podpira daljšo pot). Kot vedno, bodite previdni v ukaznem pozivu, da se izognete nehotenemu brisanju datotek ali imenikov, ki ste jih nameravali zapustiti.

    Če je naš pregled te težave radoveden, se vsekakor poglobite v ta članek iz knjižnice Microsoftovega razvojnega omrežja, poimenovanje datotek, poti in imenskih prostorov za več informacij o tem, kaj se dogaja v oknu.


    Imate vprašanje s tehnološkim pritiskom? Ustreli nam e-poštno sporočilo na [email protected] in mi se bomo potrudili, da mu odgovorimo.