22Aug
Ja jūs strādājat ar Windows pietiekami ilgi, jo īpaši ar mapēm un failiem, kuriem ir garie nosaukumi, jums radīsies dīvaina kļūda: Windows ziņos, ka mapes ceļš vai faila nosaukums ir pārāk garš, lai pārietu uz jaunu galamērķi vai pat izdzēstu. Kas par lietu?
Hei, kā-to geek!
Tātad, otrdien man rekonstruējot dažus failus uz sava datora, veidojot mapes, šāda veida stuff. Tad, kad dažus failus pārvietoju uz mapi, man tiek parādīts ziņojums, norādot, ka iegūtais mapes ceļš ir pārāk garš.ES biju apmulsis. Es zinu, ka katrai OS, jo DOS atbalsta Long Filenames, bet Windows apgalvo, ka ceļš ir pārāk ilgs? Kāpēc tas notiek?
Ar cieņu,
Mr Disorganized
Problēma, ar kuru jūs sastopat, ir neapmierinoša divu sistēmu krustošanās, kas šādos gadījumos rada kļūdu. Lai precīzi saprastu, no kurienes rodas kļūda, mums jāraiza Long Filenames( LFN) vēsture un tas, kā Windows mijiedarbojas ar tām, pirms mēs nonākam pie risinājumiem.
Long Filenames tika ieviesti, izmantojot pamatā esošo MS-DOS arhitektūru, operētājsistēmā Windows 95. Jaunā LFN sistēma pieļāva faila un direktoriju nosaukumus, kuru lielums bija 255 rakstzīmes. Tas bija laba iepriekšējās failu nosaukumu sistēmas paplašināšanās, ko parasti sauc par faila nosaukumu 8.3, jo nosaukumam bija piecas rakstzīmes un trīs ciparu paplašinājums, bet tas sauc arī par īsu faila nosaukumu( SFN).Kā jūs varat iedomāties, pagaidām pēc tam joprojām bija daudz DOS balstītu progr apkārt un tur bija vairāk nekā dažas galvassāpes, mēģinot iegūt jaunāku LFNs un mantotās SFN, lai spēlēja jauki ar otru. Ja jūs kādreiz esat saskāries ar vecāku disketes vai kompaktdisku ar neparasti saīsinātām failiem par to( piemēram, abcdef ~ 1.txt), ka dažu SFN-lietojamo mantoto pieteikumu no dažiem ilgākiem un neatbalstītiem LFN( piemēram, abcdefghijk.txt).
Mēs esam tālu no deviņdesmito gadu vidus, un visa Long Filename lieta( lielākoties) ir stingri izlīdzināta. Ja pēdējo desmit gadu laikā esat izmantojis Windows versiju, iespējams, ka nekad nebūsiet saskāries ar faila nosaukuma garuma konfliktu, piemēram, mēs izmantojām DOS / Windows 95 dienu laikā.Tas nozīmē, ka mēs joprojām nonākam žagos, kā jūs atklājāt ar diska tīrīšanas projektu. Bet kāpēc? Ja Windows Long Filename sistēma atbalsta mapes un faila nosaukumus līdz 255 rakstzīmēm uz vienu komponentu, uz kādu sienu jūs ieslēdzat? Mēs nevaram vainot NTFS( failu sistēmu, ko izmanto lielākā daļa mūsdienu Windows ierīču), jo NTFS atbalstīs mapju un failu nosaukumu sajaukšanu kopējā ceļa garumā 32 767 rakstzīmes. Tas ievērojami pārsniedz tipisko direktoriju struktūru, kāda lielākajai daļai lietotāju būtu nepieciešama.
Kur tas viss izkritīs, ir mākslīgs ierobežojums Windows skavām LFN / NTFS sistēmas augšpusē: MAX_PATH mainīgais. MAX_PATH mainīgais norāda, ka pilnīga direktoriju struktūra sistēmā Windows nedrīkst pārsniegt 260 kopējās rakstzīmes, ieskaitot diska burtu, kolu, aizmugurējās slīpsvītras slīpumu un nulles atbloķēšanu. Tādējādi jums ir potenciāls reālais MAX_PATH ar 256 rakstzīmēm, piemēram, C: \ your-256-character-path \ .
Tātad, kas notika, kad jūs tīrījaties savu datoru, ir tas, ka jums bija katalogs ar jau garu ceļu( vai nu tāpēc, ka mapju nosaukumi bija ilgi, failu nosaukumi bija ilgi vai abi), un kad mēģinājāt pārvietot vienu vai vairākusno šiem direktorijiem citā direktorijā ar garu ceļu, ceļa nosaukuma kopējais garums pārsniedza 260 rakstzīmju ierobežojumu, ko noteica MAX_PATH mainīgais.
Tagad jūs domājat "Ah-hah! Mēs vienkārši mainīsim MAX_PATH mainīgo un atrisināsim problēmu! "Diemžēl tas nav tik vienkārši. Ne tikai mainīgais MAX_PATH būtībā ir stingri kodēts sistēmā Windows, bet pat tad, ja jūs izietu milzīgu problēmu, mainot to, jūs galu galā izlauzāt tik daudz, tas nebūtu vērts. Pārāk daudz pieteikumu sagaida, ka ceļa mainīgais ir tāds, kādu Windows to jau ir norādījis. Mēs nevaram vienkārši mainīt to, neradot milzīgu netīci.
Kur tas tevi atstāj? Nu, vienkāršākais risinājums ir vienkārši rediģēt ceļa datus. Piemēram, ja jums ir vairāki saglabātie raksti, kuros lietojumprogramma / paplašinājums, kuru izmantojāt, lai tos saglabātu no tīmekļa, izveidoja direktoriju, kas bija pilns raksta nosaukums + raksta svins, un pats pats faila nosaukums ir pilns nosaukumsno raksta + raksta svina, tiešām būtu vienkārši hit vai pārsniegt MAX_PATH ar vienu ietaupījumu.Šo milzīgo mapju un rakstu nosaukumu rediģēšana līdz saprātīgam izmēram ir vienkāršs veids, kā novērst problēmu.
Ja jums ir ļoti daudz failu ar lielu ceļu un jūs nevēlaties tos rediģēt( vai arī vēlaties, lai dzēstu tonnu veco direktoriju, kas Windows ir pārāk garš, lai to ierobežotuMAX_PATH mainīgais), ir darbs komandrindā.Kaut arī Windows mainās MAX_PATH mainīgais, Windows inženieri saprata, ka būs situācijas, kad lietotājiem būs jārisina ilgāku ceļu nosaukumi. Tādējādi Windows API ir funkcija, kas ļauj apstrādāt ļoti garus ceļus.
Lai izmantotu šo API un izmantotu komandrindas rīkus savām nepatīkamajām mapēm / failu nosaukumiem, jums vienkārši jāpievieno direktorija nosaukums ar dažām papildu rakstzīmēm. Piemēram, ja jums bija milzīga direktoriju struktūra, kuru vēlaties dzēst( bet, kad to mēģinājāt, saņēmāt kļūdu, ņemot vērā ceļa garumu), jūs varat mainīt komandu no:
rmdir c: \ documents \ some-really-super-long-folder-name-scheme \
uz:
rmdir \\? \ c: \ documents \ some-really-super-long-folder-name-scheme \
Atslēga ir \\? \ daļas pievienošanapirms faila ceļa sākuma;tas uzdod Windows ignorēt MAX_PATH mainīgā noteiktos ierobežojumus un mijiedarboties ar tieši piegādāto ceļu, ko tieši piegādā vai saprot pamata failu sistēma( kas var skaidri atbalstīt garāku ceļu).Kā vienmēr, rīkojieties piesardzīgi komandu uzvednē, lai izvairītos no nejaušas failu vai direktoriju dzēšanas, kuru vēlaties atstāt neskartu.
Ja jums ir ziņkārīgs jautājums par šo problēmu, noteikti iegremdējiet šo rakstu no Microsoft Developer Network bibliotēkas, nosaukumu failiem, ceļiem un vārdu telpām, lai iegūtu plašāku informāciju par to, kas notiek zem pārsega.
Vai ir aktuāls tehnoloģiju jautājums? Uzņemiet mums e-pastu uz adresi [email protected], un mēs darīsim visu iespējamo, lai to atbildētu.