Miért túl sok másolni a Windows-jelentést?

Miért túl sok másolni a Windows-jelentést?
Miért túl sok másolni a Windows-jelentést?

Videó: Miért túl sok másolni a Windows-jelentést?

Videó: Miért túl sok másolni a Windows-jelentést?
Videó: Google Titan Security Key Bundle | How to Set Up Advanced Online Protection - YouTube 2024, Április
Anonim
Ha elég hosszú ideig dolgozik a Windows rendszerrel, különösen hosszú nevekkel rendelkező mappák és fájlok esetén, akkor bizarr hibaüzenetet fog jelenteni: a Windows jelzi, hogy a mappa elérési útja vagy a fájl neve túl hosszú ahhoz, hogy új rendeltetési helyre lépjen, vagy akár törölje. Mi a helyzet?
Ha elég hosszú ideig dolgozik a Windows rendszerrel, különösen hosszú nevekkel rendelkező mappák és fájlok esetén, akkor bizarr hibaüzenetet fog jelenteni: a Windows jelzi, hogy a mappa elérési útja vagy a fájl neve túl hosszú ahhoz, hogy új rendeltetési helyre lépjen, vagy akár törölje. Mi a helyzet?

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

A probléma, amellyel futsz, két rendszer szerencsétlen metszéspontja, amely ilyen esetekben hibát okoz. Ahhoz, hogy pontosan megértsük, honnan származik a hiba, be kell dugnunk a Hosszú Fájlnevek (LFN) történetébe, és hogy a Windows hogyan működik együtt velük, mielőtt megoldásokat találunk.

Hosszú fájlneveket vezettek be az alapul szolgáló MS-DOS architektúra révén a Windows 95 rendszerben. Az új LFN rendszer legfeljebb 255 karakterből álló fájl- és könyvtárneveket engedélyezett. Ez volt az előző fájlnévrendszer üdvözlendő bővítése, általában 8.3-as fájlnév, mert a név nyolc karakterre és háromjegyű kiterjesztésre korlátozódott, de rövid fájlnévként (SFN) is ismert. Ahogy el tudod képzelni, akkor még mindig sok DOS-alapú alkalmazás volt, és több fejfájást is találtak, hogy megpróbálják az újabb LFN-eket és a régi SFN-eket játszani. Ha valaha találkoztál egy régebbi lemezt vagy CD-t, amelyen furcsán csonka fájlok találhatók rajta (például abcdef ~ 1.txt), a fájlnevet lecsökkentette valamilyen SFN-alapú alkalmazás, amely egy hosszabb és nem támogatott LFN-ből származik (például abcdefghijk. txt).

Az 1990-es évek közepétől azonban messze vagyunk, és az egész Long Filename dolog (nagyrészt) határozottan ki van húzva. Ha az elmúlt 10 évben Windows verziót futtat, akkor valószínűleg soha nem találja meg a fájlnév hosszúságú konfliktusokat, mint ahogy a DOS / Windows 95 napokban futottunk. Ez azt jelenti, hogy még mindig a csuklásba ütköztünk, ahogy felfedezte a lemeztisztító projektet. De miért? Ha a Windows Hosszú Filename rendszere támogatja az összetevők legfeljebb 255 karakteres mappáit és fájlnevét, melyik falat futja be? Nem hibáztathatjuk az NTFS-t (a modern Windows gépek túlnyomó többségét használó fájlrendszer), mivel az NTFS támogatni fogja a mappák és fájlnevek összefűzését 32.767 karakteres teljes elérési útig. Ez messze meghaladja a tipikus címtárstruktúrát, amelyet a legtöbb felhasználónak szüksége lenne.

Ahol az egész szétesik, mesterséges korlátozás A Windows az LFN / NTFS rendszer tetején: a MAX_PATH változó. A MAX_PATH változó meghatározza, hogy a Windows teljes címtárstruktúrája nem haladhatja meg a 260 teljes karaktert, beleértve a meghajtó betűjét, a kettőspontot, a visszafordulást és a nulla visszaütést. Így csak egy potenciális, MAX_PATH 256 karakterből állhat, pl. C: z-256-karakteres path.

Tehát mi történt a számítógép tisztításakor, hogy már van egy hosszú könyvtára (akár azért, mert a könyvtárnevek hosszúak voltak, a fájlnevek hosszúak voltak, vagy mindkettő), és amikor egy vagy több ezek a könyvtárak egy másik hosszú könyvtárba, az elérési út teljes hossza meghaladta a MAX_PATH változó 260 karakteres korlátját.

Most gondolhatsz "Ah-hah! Csak megváltoztatjuk a MAX_PATH változót, és megoldjuk a problémát! "Sajnos ez nem olyan egyszerű. Nem csak a MAX_PATH változó lényegében keményen kódolva van a Windows-ban, de még akkor is, ha átnézted azt a hatalmas problémát, hogy megváltoztatod, akkor annyira megtörhetsz, hogy nem érné meg. Túl sok alkalmazás várja az elérési útvonal változóját, amit a Windows régóta meghatároz. Nem tudunk csak körbejárni, anélkül, hogy hatalmas rendetlenséget hoznánk létre.

Hol hagyja el? Nos, a legegyszerűbb megoldás az útadatok szerkesztése. Például, ha van egy csomó mentett cikk, ahol az alkalmazás / kiterjesztés, amelyet mentett az internetről, létrehozott egy könyvtárat, amely a cikk teljes címe és a cikkcím volt, majd maga a fájlnév a teljes cím a cikk + a cikk vezetése, nagyon egyszerű lenne elérni vagy meghaladni a MAX_PATH egyetlen mentést. Ezeknek a hatalmas mappáknak és cikkcímeknek a szerkesztése ésszerűbb mérete egyszerűen megoldja a problémát.

Ha hatalmas számú fájl van hosszú útvonallal, és nem szeretné őket szerkeszteni (vagy ha szeretnétöröl egy tonna régi könyvtárak, amelyek túl hosszúak ahhoz, hogy a Windows kezelni tudja, ha a MAX_PATH változó korlátozza), van egy parancssori munka körül. Annak ellenére, hogy a Windowsot a MAX_PATH változó korlátozza, a Windows mérnökei felismerték volna, hogy olyan helyzetekről van szó, amelyeknek a felhasználóknak hosszabb elérési utat kell felvenniük. Így a Windows API funkciója rendkívül hosszú utak kezelésére szolgál.

Annak érdekében, hogy kihasználhassa az API-t, és használhassa a parancssori eszközöket a nehezebb mappákon / fájlneveken, egyszerűen hozzá kell adnia a könyvtár nevét néhány extra karakterrel. Ha például hatalmas könyvtárstruktúrát szeretne törölni (de hiba történt az elérési út hossza miatt), megváltoztathatja a következő parancsot:

rmdir c:documentssome-really-super-long-folder-name-scheme

nak nek:

rmdir \?c:documentssome-really-super-long-folder-name-scheme

A kulcs a

?

a fájl elérési útvonalának megkezdése előtt; ez arra utasítja a Windows-ot, hogy figyelmen kívül hagyja a MAX_PATH változó által megszabott korlátozásokat, és lépjen kapcsolatba az elérési útjával, amelyet az alapul szolgáló fájlrendszerek közvetlenül szolgáltattak / értettek (ami egyértelműen hosszabb utat támogat).Mint mindig, óvatosan járjon el a parancssorban, nehogy véletlenül törölje azokat a fájlokat vagy könyvtárakat, amelyeket sértetlenül hagyott.

Ha a probléma áttekintése kíváncsi, feltétlenül belevesszük ezt a cikket a Microsoft Developer Network könyvtárból, a fájlok elnevezése, a elérési útvonalak és a névterekről, hogy megtudjuk, mi történik a motorháztető alatt.

Légy sürgető technikai kérdés? Lépj nekünk egy e-mailt az [email protected] címen, és mi mindent megteszünk, hogy válaszoljon.

Ajánlott: