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
Ongelma, johon olet tekemässä, on valitettava risteys kahdesta järjestelmästä, jotka tällaisissa tapauksissa aiheuttavat virheen. Jotta ymmärtäisimme tarkalleen, mistä virheestä tulee, meidän on etsittävä Long Filenames (Long Filenames) -historia ja miten Windows toimii vuorovaikutuksessa niiden kanssa, ennen kuin löydämme ratkaisuja.
Pitkät tiedostot otettiin käyttöön taustalla olevan MS-DOS -arkkitehtuurin kautta Windows 95: ssä. Uusi LFN-järjestelmä mahdollisti enintään 255 merkin tiedoston ja hakemiston nimen. Tämä oli tervetullut laajennus edellisen tiedostonimen järjestelmä, yleensä kutsutaan 8.3 tiedoston, koska nimi oli rajoitettu kahdeksaan merkkiä ja kolmen numeron laajennus, mutta tunnetaan myös lyhyt tiedostonimi (SFN). Kuten voitte kuvitella, silloin vielä oli paljon DOS-pohjaisia sovelluksia ja enemmän kuin muutama päänsärky yritti saada uudet LFN: t ja vanhimmat SFN: t pelaamaan mukavasti toistensa kanssa. Jos olet koskaan törmännyt vanhaan levykkeeseen tai CD-levylle, jolla on outoja lyhennettyjä tiedostoja (kuten abcdef ~ 1.txt), jonka tiedostonimi leikattiin joidenkin SFN: n käyttämien vanhojen sovellusten avulla joidenkin pidempien ja tukemattomien LFN: n (kuten abcdefghijk. txt).
Olemme kuitenkin kaukana 1990-luvun puolivälistä, ja koko Long-tiedoston nimi on (pääosin) tiukasti irrotettu. Jos käytät Windows-versiota viimeisten 10 vuoden ajalta, et todennäköisesti edes löydä filename-pituusongelmaa, kuten aiemmin käytimme DOS / Windows 95-päivinä. Se sanoi, että silti törmätä hikkaihin, kuten havaitsit levyn puhdistusprojektin kanssa. Mutta miksi? Jos Windowsin Long Filename -järjestelmä tukee enintään 255 merkkiä / kansiota ja tiedostojen nimeä, mikä seinä on? Emme voi syyttää NTFS: tä (tiedostojärjestelmää, jota suurin osa nykyaikaisista Windows-koneista käyttää), koska NTFS tukee kansioiden ja tiedostojen ketjuttamista yhteensä 32 767 merkin pituiseen kokonaispituuteen. Tämä ylittää tyypillisen hakemistorakenteen, jota useimmat käyttäjät tarvitsevat.
Jos kaikki hajoaa, keinotekoinen rajoitus Windows pinoaa LFN / NTFS-järjestelmän päälle: MAX_PATH-muuttuja. MAX_PATH-muuttuja määrittää, että täydellinen hakemistorakenne Windowsissa ei saa olla yli 260 kokonaislukua, mukaan lukien kirjaimen kirjain, kaksoispiste, kenoviiva ja loppuosa. Siten sinulla on vain todellinen MAX_PATH 256 merkkiä, esim. C: oma-256-merkkinen-polku.
Joten mitä tapahtui, kun puhdistit tietokoneesi, on, että sinulla oli hakemisto, jolla oli jo pitkä polku (joko koska kansionimet olivat pitkiä, tiedostonimet olivat pitkiä tai molempia) ja kun yritit siirtää yhtä tai useampaa nämä hakemistot toiseen hakemistoon, jolla on pitkä polku, polun nimen kokonaispituus ylitti MAX_PATH-muuttujan määräämän 260 merkin rajan.
Nyt voit ajatella "Ah! Hah! Vaihdamme MAX_PATH-muuttujaa ja ratkaisemme ongelman! ", Ei valitettavasti ole niin yksinkertaista. Ei vain MAX_PATH-muuttuja oleellisesti kovakoodattu Windowsiin, mutta vaikka menetkin valtavaa vaivaa vaihtaa sitä, päätät murtautua niin paljon, että se ei olisi sen arvoista. Liian monta sovellusta odottaa polun muuttujan olevan mitä Windows on pitkään määritellyt sen olevan. Emme voi vain muuttaa sitä ilman suurta sotkua.
Mistä tämä jättää sinut? No, yksinkertaisin ratkaisu on vain muokata polkuja. Jos esimerkiksi sinulla on useita tallennettuja artikkeleita, joissa sovellus / laajennus, jota käytit niiden tallentamiseen verkosta, loi hakemiston, joka oli artikkelin ja artikkelirivin täysi otsikko ja sitten itse tiedostonimi on koko nimike artikkelista ja artikkelijohdosta, olisi todella helppoa lyödä tai ylittää MAX_PATH yhdellä tallennuksella. Näiden valtavien kansioiden ja artikkelien otsikoiden muokkaaminen kohtuullisempaan 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 haluatpoistaa runsaasti vanhoja hakemistoja, jotka ovat liian kauan Windowsin käsittelemiseksi, kun MAX_PATH-muuttuja rajoittaa niitä), komentorivin käsittely on käynnissä. Vaikka MAX_PATH-muuttuja rajoittaa Windowsia, Windows-insinöörit havaitsivat, että tilanteissa, joissa käyttäjien pitäisi käsitellä pidempiä polkuja. Näin ollen Windows-sovellusliittymällä on toiminto erittäin pitkän polkujen käsittelyyn.
Jotta voit hyödyntää kyseistä sovellusliittymää ja käyttää komentorivityökaluja raskaiden kansioiden / tiedostojen nimeäsi, sinun tarvitsee vain lisätä hakemiston nimi muutamalla ylimääräisellä merkillä. Jos sinulla esimerkiksi oli valtava hakemistorakenne, jonka haluat poistaa (mutta sait virheen johtuen polun pituudesta, kun yritit sitä), voit muuttaa komennon:
rmdir c:documentssome-really-super-long-folder-name-scheme
että:
rmdir \?c:documentssome-really-super-long-folder-name-scheme
Avain on lisäys
?
osa ennen tiedoston polun alkua; tämä kehotti Windowsia jättämään MAX_PATH-muuttujan asettamat rajoitukset ja toimimaan vuorovaikutuksessa juuri toimitetun polun kanssa, joka toimitetaan / ymmärtää suoraan taustalla oleva tiedostojärjestelmä (joka voi selvästi tukea pidemmän polun).Kuten aina, käytä varoitusta komentokehotteessa, jotta vältät vahingossa poistettavien tiedostojen tai hakemistojen poistamisen.
Jos yleiskuvan tästä ongelmasta on utelias, tutustu tämän artikkelin Microsoft Developer Network -kirjastoon, nimettyjen tiedostojen, polkujen ja nimet-tilojen artikkeliin saadaksesi lisätietoa hupun alla olevista tiedoista.
Onko tekniikka kysymys? Anna meille sähköpostia osoitteesta [email protected] ja teemme parhaamme vastatakseen siihen.