Mājas lapa » » Kāpēc Windows ziņošana Šī mape ir pārāk ilga, lai kopētu?

    Kāpēc Windows ziņošana Šī mape ir pārāk ilga, lai kopētu?

    Ja jūs strādājat ar Windows pietiekami ilgu laiku, jo īpaši ar mapēm un failiem, kuriem ir garš vārds, jums radīsies savāda 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 dzēstu. Kas par lietu?

    Hey How-To Geek!

    Tātad, otro dienu, es reorganizēju dažus failus savā datorā, izveidojot mapes, šāda veida lietas. Tad, kad es pārvietoju dažus failus mapē, es saņemu ziņojumu, norādot, ka iegūtais mapes ceļš būtu pārāk garš. ES biju apmulsis. Es zinu, ka katru OS, jo DOS atbalsta garus failu nosaukumus, tomēr Windows apgalvo, ka ceļš ir pārāk garš? Kāpēc tas notiek?

    Ar cieņu,

    Mr Disorganized

    Problēma, kas rodas, ir neveiksmīga divu sistēmu krustošanās, kas šādos gadījumos rada kļūdu. Lai saprastu, kur tieši rodas kļūda, mums ir jāiekļaujas garo failu nosaukumu (LFN) vēsturē un kā Windows mijiedarbojas ar tiem, pirms mēs ienācam risinājumos.

    Ar Windows 95 palīdzību tika ieviesti garie failu nosaukumi, izmantojot MS-DOS arhitektūru. Jaunā LFN sistēma ir atļauta failu un direktoriju nosaukumiem līdz 255 rakstzīmēm. Tas bija iepriecināts iepriekšējā faila nosaukuma sistēmas paplašinājums, ko parasti sauc par 8.3 faila nosaukumu, jo nosaukums bija ierobežots līdz astoņām rakstzīmēm un trīsciparu paplašinājumam, bet pazīstams arī kā Short Fileename (SFN). Kā jūs varat iedomāties, toreiz vēl bija daudz DOS balstītu lietojumprogrammu, un bija vairāk nekā dažas galvassāpes, kas mēģināja iegūt jaunākos LFN un mantojuma SFN, lai viens otru spēlētu jauki. Ja esat kādreiz sastapies ar vecāku disketi vai CD-ROM ar neparasti atdalītiem failiem (piemēram, abcdef ~ 1.txt), daži SFN-lietojumprogrammu lietojumprogramma no dažiem garākiem un neatbalstītiem LFN (piemēram, abcdefghijk) samazināja. txt).

    Tomēr mēs esam tālu no deviņdesmito gadu vidus, un viss garais faila nosaukums (lielākoties) ir stingri izlīdzināts. Ja lietojat Windows versiju no pēdējiem 10 gadiem, jūs, visticamāk, nekad neesat saskārušies ar faila nosaukuma garuma konfliktu, piemēram, mēs izmantojām 95 dienas DOS / Windows. Tas nozīmē, ka mēs joprojām paliekam žagas, kā jūs atklājāt ar diska tīrīšanas projektu. Bet kāpēc? Ja sistēmas Windows garais faila nosaukums sistēma atbalsta mapes un failu nosaukumus līdz 255 rakstzīmēm katrai sastāvdaļai, kāda siena tiek ievadīta? Mēs nevaram vainot NTFS (failu sistēmu, ko izmanto lielākā daļa mūsdienu Windows iekārtu), jo NTFS atbalstīs mapju un failu nosaukumu ķēdi līdz kopējam ceļa garumam 32,767 rakstzīmes. Tas ievērojami pārsniedz tipisko direktoriju struktūru, kas vairumam lietotāju būtu vajadzīga.

    Ja tas viss izzūd, ir mākslīgs ierobežojums, ko Windows uzkrāj LFN / NTFS sistēmas virsotnē: MAX_PATH mainīgais. Mainīgais MAX_PATH norāda, ka pilnīga direktoriju struktūra sistēmā Windows nevar pārsniegt 260 rakstzīmes, ieskaitot diska burtu, resnās zarnas, backslash un nulles slīpumu beigās. Tādējādi jums ir potenciālais reālais MAX_PATH ar 256 rakstzīmēm, piemēram,. C: Jūsu 256 rakstzīmju ceļš.

    Tātad tas, kas notika, tīrot datoru, ir tāds, ka jums bija katalogs ar jau ilgu ceļu (vai nu tāpēc, ka mapju nosaukumi bija garš, failu nosaukumi bija garš, vai abi), un kad mēģinājāt pārvietot vienu vai vairākus no šos direktorijus citā direktorijā ar garu ceļu, kopējais ceļa nosaukuma garums pārsniedza 260 rakstzīmju ierobežojumu, ko noteica mainīgais MAX_PATH.

    Tagad jūs domājat „Ah-hah! Mēs vienkārši mainīsim MAX_PATH mainīgo un atrisināsim problēmu! ”Ak, tas nav tik vienkārši. MAX_PATH mainīgais ne tikai ir kodēts sistēmā Windows, bet arī tad, ja jūs izjutāt milzīgo problēmu, mainot to, jūs galu galā pārtraucat tik daudz, ka tas nebūtu tā vērts. Pārāk daudz pieteikumu sagaida, ka ceļa mainīgais ir tas, ko Windows jau sen ir norādījis. Mēs nevaram vienkārši izmainīt to, neradot milzīgu putru.

    Kur tas jūs atstāj? Nu, vienkāršākais risinājums ir vienkārši mainīt ceļa datus. Piemēram, ja jums ir tonnas saglabāto rakstu, kur lietojumprogramma / paplašinājums, ko izmantojāt, lai tos saglabātu no tīmekļa, izveidoja direktoriju, kas bija raksta pilns nosaukums + raksta vadība, un tad paša faila nosaukums ir pilns nosaukums no raksta + raksta svina, būtu tiešām vienkārši nokļūt vai pārsniegt MAX_PATH ar vienu saglabāšanu. Šo milzīgo mapju un rakstu nosaukumu rediģēšana līdz saprātīgākam izmēram ir vienkāršs veids, kā novērst problēmu.

    Ja jums ir liels skaits failu ar garu ceļu un nevēlaties tos rediģēt (vai arī, ja vēlaties dzēst daudz vecu direktoriju, kas ir pārāk ilgi, lai Windows varētu tikt galā ar ierobežojumu ar MAX_PATH mainīgo), ir komandrindas darbs. Kaut arī Windows ir ierobežots ar MAX_PATH mainīgo, Windows inženieri saprata, ka būs situācijas, kad lietotājiem būtu jātiek galā ar garākiem ceļa nosaukumiem. Tā, piemēram, Windows API ir funkcija, lai risinātu ļoti garus ceļus.

    Lai izmantotu šo API un izmantotu komandrindas rīkus savās sarežģītajās mapēs / failu nosaukumos, jums vienkārši jāpievieno direktorijas nosaukums ar dažām papildu rakstzīmēm. Piemēram, ja jums bija milzīga direktoriju struktūra, kuru vēlaties dzēst (bet, saņemot mēģinājumu, saņēma kļūdu ceļa garuma dēļ), jūs varat mainīt komandu no:

    rmdir c: dokumenti, kas patiešām ir super-long-map-name-shēma.

    uz:

    rmdir c: dokumenti, kas patiešām ir super-long-map-name-shēma.

    Galvenais ir papildinājums Vai tas ir? daļa pirms faila ceļa sākuma; tas uzdod Windows ignorēt MAX_PATH mainīgā ierobežojumus un mijiedarboties ar ceļu, ko tikko piegādājāt, kā to nodrošina / saprot tieši pamatā esošā failu sistēma (kas var skaidri atbalstīt garāku ceļu). Kā vienmēr, rīkojieties piesardzīgi komandu uzvednē, lai nejauši izdzēstu failus vai direktorijus, kurus esat paredzējis atstāt neskartus.

    Ja mūsu pārskats par šo jautājumu jums ir ziņkārīgs, noteikti iejusties šajā rakstā no Microsoft Developer Network bibliotēkas, Failu, ceļu un nosaukumu laukumu nosaukšanas, lai iegūtu plašāku informāciju par to, kas notiek zem pārsega.


    Vai jums ir aktuāls jautājums? Šaujiet mums e-pastu uz [email protected] un mēs darīsim visu iespējamo, lai atbildētu uz to.