Kotisivu » miten » Miksi Windows-raportointi Tämä kansio on liian pitkä kopiointia varten?

    Miksi Windows-raportointi Tämä kansio on liian pitkä kopiointia varten?

    Jos käytät Windowsia riittävän kauan, etenkin kansioiden ja tiedostojen kanssa, joissa on pitkät nimet, näyttöön tulee outo virhe: Windows ilmoittaa, että kansion polku tai tiedostonimi on liian pitkä siirtymään uuteen kohteeseen tai jopa poistamaan. Mikä on sopimus?

    Hei How-To Geek!

    Joten toisena päivänä järjestin joitakin tiedostoja tietokoneessani, luoden kansioita, sellaisia ​​juttuja. Sitten, kun siirrin joitakin tiedostoja kansioon, saan viestin, jossa todetaan, että tuloksena oleva kansiopolku olisi liian pitkä. Olin hämmentynyt. Tiedän, että jokainen käyttöjärjestelmä, koska DOS tukee pitkiä tiedostonimiä, mutta Windows väittää, että polku on liian pitkä? Miksi näin tapahtuu?

    sincerly,

    Herra Disorganized

    Ongelma, johon törmäät, on kahden järjestelmän epäonninen leikkauspiste, joka tällaisissa tapauksissa tuottaa virheen. Jotta voisit ymmärtää tarkalleen, mistä virhe tulee, meidän on kaivettava pitkien tiedostonimien (LFN) historiaan ja siihen, miten Windows toimii niiden kanssa ennen kuin törmäsimme ratkaisuihin.

    Pitkät tiedostonimet otettiin käyttöön perustana olevan MS-DOS-arkkitehtuurin kautta Windows 95: ssä. Uusi LFN-järjestelmä sallii enintään 255 merkkiä sisältävien tiedostojen ja hakemistojen nimet. Tämä oli tervetullut laajennus edelliseen tiedostonimen järjestelmään, jota kutsutaan yleensä 8.3-tiedostonimeksi, koska nimi oli rajoitettu kahdeksaan merkkiin ja kolminumeroiseen laajennukseen, mutta tunnetaan myös nimellä lyhyt tiedostonimi (SFN). Kuten voitte kuvitella, siellä oli vielä paljon DOS-pohjaisia ​​sovelluksia, ja siellä oli enemmän kuin muutama päänsärky, jotka yrittivät saada uudemmat LFN: t ja vanhemmat SFN: t pelaamaan mukavasti keskenään. Jos olet koskaan törmännyt vanhempaan levykkeeseen tai CD-ROM-levylle, jossa on kummallisia lyhennettyjä tiedostoja (kuten abcdef ~ 1.txt), jotkin SFN: ää käyttävät vanhat sovellukset leikattiin tiedostonimellä joistakin pidemmistä ja tukemattomista LFN: stä (kuten abcdefghijk. txt).

    Olemme kuitenkin kaukana 1990-luvun puolivälistä, ja koko Long-tiedostonimi on (useimmiten) tiukasti sileä. Jos käytät Windows-versiota viimeisten 10 vuoden aikana, olet todennäköisesti koskaan edes törmännyt tiedostonimen pituuteen liittyvään ristiriitaan, kuten me tapasimme takaisin DOS / Windows 95 -päivinä. Siitä huolimatta, meillä on yhä hiccups, kuten havaitsitte levyn siivousprojektissa. Mutta miksi? Jos Windowsin pitkä tiedostonimi -järjestelmä tukee enintään 255 merkkiä sisältäviä kansioita ja tiedostojen nimiä, mitä seinää käytät? Emme voi syyttää NTFS: ää (tiedostojärjestelmä, jota suurin osa nykyaikaisista Windows-koneista käyttää), koska NTFS tukee kansioiden ja tiedostojen ketjuttamista yhteensä enintään 32,767 merkin pituiselle polulle. Tämä ylittää huomattavasti tyypillisen hakemistorakenteen, jota useimmat käyttäjät tarvitsisivat koskaan.

    Missä se kaikki hajoaa, on keinotekoinen rajoitus, jota Windows pinoaa LFN / NTFS-järjestelmän päälle: MAX_PATH-muuttuja. MAX_PATH-muuttuja määrittää, että Windowsin täydellinen hakemistorakenne ei voi ylittää 260 merkkiä, mukaan lukien aseman kirjain, kaksoispiste, kääntövyö ja nollakatkos. Näin ollen potentiaalinen todellinen MAX_PATH on vain 256 merkkiä, esim. C: \ oma-256-merkkinen-polku \.

    Joten mitä tapahtui, kun puhdistat tietokonetta, on, että sinulla oli jo pitkä polku (joko koska kansioiden nimet olivat pitkiä, tiedostonimet olivat pitkiä tai molemmat) ja kun yritit siirtää yhtä tai useampaa nämä hakemistot toiseen hakemistoon, jolla on pitkä polku, polun nimen kokonaispituus ylitti MAX_PATH-muuttujan asettaman 260 merkin rajan.

    Nyt saatat ajatella “Ah-hah! Muutamme vain MAX_PATH-muuttujan ja ratkaistaan ​​ongelma! ”Valitettavasti se ei ole niin yksinkertaista. MAX_PATH-muuttuja ei ole vain kovasti koodattu Windowsiin, mutta vaikka olisit käynyt läpi valtavan vaivaa sen muuttamisessa, päädytte rikkomaan niin paljon, ettei se olisi sen arvoista. Liian monta sovellusta odottaa polun muuttujan olevan sitä, mitä Windows on jo pitkään määrittänyt. Emme voi vain siirtyä sen muuttamiseen luomatta valtavaa sotkua.

    Mistä tämä jättää sinut? Yksinkertaisin ratkaisu on vain muokata polun tietoja. Esimerkiksi jos sinulla on tonni tallennettuja artikkeleita, joissa sovellus / laajennus, jonka olet tallentanut ne verkosta, luonut hakemiston, joka oli artikkelin koko nimi + artikkelin lyijy, ja sitten tiedoston nimi on täydellinen nimi artikkelin + artikkelin lyijy, olisi todella helppoa lyödä tai ylittää MAX_PATH yhden tallennuksen avulla. Näiden valtavien kansioiden ja artikkelien otsikoiden muokkaaminen kohtuulliseen kokoon on helppo tapa korjata ongelma.

    Jos sinulla on valtava määrä tiedostoja, joilla on pitkä polku ja et halua muokata niitä kaikkia (tai jos haluat poistaa ton vanha vanhoja hakemistoja, jotka ovat liian kauan, jotta Windows voi käsitellä, kun MAX_PATH-muuttuja rajoittaa), on komentorivin työ. Vaikka Windows on MAX_PATH-muuttujan rajoissa, Windows-insinöörit huomasivat, että olisi tilanteita, joissa käyttäjien olisi käsiteltävä pidempiä polkuja. Siten Windows API: lla on toiminto, jolla käsitellään erittäin pitkiä polkuja.

    Jotta voisit hyödyntää tätä API: ta ja käyttää komentorivityökaluja raskaisiin kansioihin / tiedostonimiin, sinun tarvitsee vain liittää hakemiston nimi muutamalla ylimääräisellä merkillä. Jos esimerkiksi sinulla oli valtava hakemistorakenne, jonka haluat poistaa (mutta sai polun pituuden takia virheen, kun yritit sitä), voit muuttaa komentoa seuraavasta:

    rmdir c: asiakirjat - todella-super-long-folder-name-järjestelmä

    että:

    rmdir c: asiakirjat - todella-super-long-folder-name-kaavio

    Tärkeintä on sen lisääminen \\? \ osa ennen tiedoston polun alkua; tämä kehottaa Windowsia jättämään huomiotta MAX_PATH-muuttujan asettamat rajoitukset ja olemaan vuorovaikutuksessa juuri toimittamanne polun kanssa, jota taustalla olevat tiedostojärjestelmät toimittavat / ymmärtävät (mikä voi selvästi tukea pidempää polkua). Ole aina varovainen komentokehotteessa, jotta vältät vahingossa poistamasta tiedostoja tai hakemistoja, joita aiot jättää koskemattomiksi.

    Jos yleiskatsauksestamme tästä asiasta on utelias, varmasti kaivaa tämä artikkeli Microsoft Developer Network -kirjastosta, Tiedostojen, polkujen ja nimitilojen nimeämisestä, saat lisätietoja siitä, mitä hupun alla tapahtuu.


    Onko sinulla tech-kysymys? Ammuta meille sähköpostia osoitteeseen [email protected] ja teemme parhaamme vastauksemme siihen.