Koduleht » kuidas » Miks on Windowsi aruandlus selle kausta kopeerimiseks liiga pikk?

    Miks on Windowsi aruandlus selle kausta kopeerimiseks liiga pikk?

    Kui töötate Windowsiga piisavalt kaua, eriti kaustade ja failide puhul, millel on pikad nimed, hakkate ilmuma veider viga: Windows teatab, et kausta tee või faili nimi on liiga pikk, et liikuda uude sihtkohta või isegi kustutada. Mis asi on?

    Hei How-To Geek!

    Nii et teisel päeval reorganiseerisin mõned failid minu arvutis, luues kaustu, selliseid asju. Siis, kui olin mõningaid faile kausta liigutades, saan sõnumi, mis näitab, et tulemuseks olev kausta tee oleks liiga pikk. Ma olin segaduses. Ma tean, et iga operatsioonisüsteem, kuna DOS toetab pikki failinimesid, kuid Windows väidab, et tee on liiga pikk? Miks see juhtub?

    Lugupidamisega,

    Hr Disorganized

    Probleem, millega sa jooksed, on kahest süsteemist tingitud õnnetu lõikumine, mis sellistel juhtudel tekitab vea. Selleks, et täpselt aru saada, kust viga pärineb, peame kaevama pikkade failinimede (LFN) ajaloosse ja seda, kuidas Windows nendega suhtleb, enne kui me lahendusi otsime.

    Pikki failinimesid kasutati Windows 95-s asuva MS-DOS-arhitektuuri kaudu. Uus LFN-süsteem on lubatud kuni 255 tähemärgi failide ja kataloogide nimede jaoks. See oli eelmise failinimede süsteemi tervitatav laiendamine, mida tavaliselt nimetatakse 8.3 failinimedeks, sest nimi oli piiratud kaheksa tähemärgiga ja kolmekohaline laiendus, kuid tuntud ka kui lühike failinimi (SFN). Nagu te võite ette kujutada, oli seal veel palju DOS-põhiseid rakendusi ja rohkem kui paar peavalu üritasid uuemaid LFN-e ja pärandvara SFN-e üksteisega kena mängida. Kui olete kunagi kohanud vanemate diskettide või CD-ROMidega, millel on imelikult kärbitud faile (nagu abcdef ~ 1.txt), vähendati mõne SFN-i kasutava pärandrakendusega mõnda pikemat ja toetamata LFN-i (nt abcdefghijk. txt).

    1990-ndate aastate keskpaigast oleme siiski kaugel ja kogu pikk failinimi on (enamasti) kindlalt välja surutud. Kui kasutate Windowsi versiooni viimase kümne aasta jooksul, ei ole tõenäoliselt kunagi isegi kohanud failinime pikkuse konflikti, nagu me kasutasime DOS / Windows 95 päeva jooksul tagasi. Sellegipoolest, kui me oma kettapuhastusprojektiga avastasime, hakkame ikka veel hikka. Aga miks? Kui Windowsi pika failinime süsteem toetab kaustu ja failinimesid kuni 255 tähemärki komponendi kohta, siis millist seina sisenete? Me ei saa süüdistada NTFS-i (failisüsteemi, mida enamik kaasaegseid Windowsi masinaid kasutab), kuna NTFS toetab kaustade ja failinimede aheldamist kuni kogupikkuse 32,767 tähemärgini. See ületab palju tüüpilist kataloogistruktuuri, mida enamik kasutajaid kunagi vajaks.

    Kui see kõik laguneb, on kunstlik piirang Windowsi korstnat LFN / NTFS süsteemi peal: MAX_PATH muutuja. Muutuja MAX_PATH määrab, et täielik kataloogistruktuur Windowsis ei tohi ületada 260 täistähist, kaasa arvatud draivitäht, käärsool, tagakülg ja nulljoon. Seega on teil potentsiaalne tegelik MAX_PATH 256 tähemärki, nt. C: sinu-256-tähemärgiline tee.

    Nii et see, mis juhtus teie arvuti puhastamisel, on see, et teil oli juba pika teekonnaga kataloog (kas kausta nimede pikkus, failinimed olid pikad või mõlemad) ja kui üritasite ühte või enamat liikuda need kataloogid teise pika teekonnaga kataloogi, ületab tee nime kogu pikkus 260 tähemärgipiirangut, mille määras MAX_PATH muutuja.

    Nüüd võite mõelda „Ah-hah! Muutame lihtsalt MAX_PATH muutujat ja lahendame probleemi! ”Paraku pole see nii lihtne. Mitte ainult MAX_PATH muutuja on Windowsis oluliselt kodeeritud, kuid isegi kui sa läbisid selle muutmise tohutu vaeva, jõuad lõpuks nii palju, et see ei oleks seda väärt. Liiga paljud rakendused eeldavad, et tee muutuja on see, mida Windows on pikka aega seda määranud. Me ei saa lihtsalt selle ümber vahetada ilma tohutu segaduseta.

    Kuhu see sind jätab? Lihtsaim lahendus on lihtsalt tee andmete muutmine. Näiteks, kui teil on tonni salvestatud artikleid, kus veebist salvestatud rakendus / laiendus lõi kataloogi, mis oli artikli täielik pealkiri + artikkel, ja seejärel faili nimi on täielik pealkiri artikli + artikli esitusviis, oleks tõesti lihtne tabada või ületada MAX_PATH ühe salvestusega. Nende tohutute kaustade ja artiklite pealkirjade redigeerimine mõistlikumale suurusele on probleemi lahendamiseks lihtne.

    Kui teil on suur hulk pika tee faile ja te ei soovi neid kõiki redigeerida (või kui soovite kustutada t vana vanad kataloogid, mis on liiga pikad, et Windows saaks toime tulla, kui seda piirab MAX_PATH muutuja), on käsurea töötamine. Kuigi Windows on piiratud MAX_PATH muutujaga, said Windowsi insenerid aru, et on olukordi, kus kasutajad peaksid tegelema pikemate teekonna nimetustega. Seega on Windowsi API-l funktsioon väga pikkade radade käsitlemiseks.

    Selleks, et kasutada seda API-d ja kasutada käsurea tööriistu oma rasketes kaustades / failinimedes, peate lihtsalt lisama kataloogi nime mõne täiendava tähemärgiga. Näiteks, kui teil oli suur kataloogistruktuur, mida soovisite kustutada (kuid te olete seda proovinud), võite muuta käsku:

    rmdir c: dokumendid, mis on tõeliselt super-long-folder-name-skeem.

    kuni:

    rmdir c: dokumendid, mis on tõeliselt super-long-folder-name-skeem.

    Võti on selle lisamine ? osa enne faili tee algust; see juhendab Windowsi ignoreerima MAX_PATH muutuja poolt kehtestatud piiranguid ja suhtlema just teie poolt tarnitud teega, nagu seda pakuvad / mõistavad otse põhifailisüsteem (mis võib selgelt toetada pikemat teed). Nagu alati, olge käsureale ettevaatlik, et vältida kogemata kustutatavate failide või kataloogide kustutamist.

    Kui meie ülevaade sellest probleemist on teile uudishimulik, kindlasti kaevake see artikkel Microsofti arendajavõrgu raamatukogu, failide, teede ja nimeruumide nimetamise kohta, et saada lisateavet selle kohta, mis toimub kapoti all.


    Kas teil on tungiv tehniline küsimus? Lase meil e-posti aadressil [email protected] ja me teeme oma parima, et sellele vastata.