2024 Auteur: Peter John Melton | [email protected]. Laatst gewijzigd: 2024-01-07 23:04
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
Het probleem dat je tegenkomt is een ongelukkige kruising van twee systemen die, in gevallen als deze, een fout oplevert. Om precies te begrijpen waar de fout vandaan komt, moeten we ingaan op de geschiedenis van lange bestandsnamen (LFN) en de manier waarop Windows met hen samenwerkt voordat we ons verdiepen in oplossingen.
Lange bestandsnamen werden geïntroduceerd, via de onderliggende MS-DOS-architectuur, in Windows 95. Het nieuwe LFN-systeem stond bestands- en mapnamen toe van maximaal 255 tekens. Dit was een welkome uitbreiding van het vorige bestandsnaamsysteem, meestal 8.3 bestandsnaamgeving genoemd omdat de naam beperkt was tot acht tekens en een extensie van drie cijfers, maar ook bekend als Short Filename (SFN). Zoals je je wel kunt voorstellen, waren er toen nog steeds veel DOS-gebaseerde apps en er waren meer dan een paar hoofdpijnen die probeerden om de nieuwere LFN's en de oude SFN's leuk met elkaar te laten spelen. Als je ooit een oudere diskette of CD-ROM tegenkwam met vreemd geknipte bestanden erop (zoals abcdef ~ 1.txt), werd de bestandsnaam gekort door een SFN-gebruikende oudere applicatie van wat langere en niet-ondersteunde LFN (zoals abcdefghijk. tekst).
We zijn echter ver verwijderd van het midden van de jaren negentig en het hele lange-bestandsnaam-item is (voor het grootste deel) duidelijk gladgestreken. Als u een versie van Windows van de afgelopen 10 jaar gebruikt, is het conflict tussen de bestandsnamen waarschijnlijk nog nooit tegengekomen, zoals we in de DOS / Windows 95-dagen tegenkwamen. Dat gezegd hebbende, we lopen nog steeds tegen hikken aan, zoals je ontdekte met je schijfopruimingsproject. Maar waarom? Als Windows 'Long Filename-systeem mappen en bestandsnamen van maximaal 255 tekens per component ondersteunt, op welke plaats loop je dan tegen? We kunnen NTFS (het bestandssysteem dat de overgrote meerderheid van de moderne Windows-machines gebruiken) niet de schuld geven. NTFS ondersteunt namelijk het koppelen van mappen en bestandsnamen tot een totale padlengte van 32,767 tekens. Dat is veel groter dan de typische directorystructuur die de meeste gebruikers ooit nodig zouden hebben.
Waar het allemaal uit elkaar valt, is een kunstmatige beperking Windows-stacks bovenop het LFN / NTFS-systeem: de MAX_PATH-variabele. De variabele MAX_PATH geeft aan dat een volledige directorystructuur in Windows maximaal 260 tekens mag bevatten, inclusief de stationsletter, dubbele punt, backslash en nul-speling aan het einde. Je hebt dus alleen een potentieel reëel MAX_PATH van 256 tekens, bijvoorbeeld C: uw-256-karakter-pad.
Dus wat er gebeurde toen je je computer aan het opruimen was, was dat je een map had met een al lang pad (ofwel omdat de mapnamen lang waren, de bestandsnamen lang waren, of beide), en toen je probeerde om een of meer van die mappen in een andere map met een lang pad, de totale lengte van de padnaam overschreed de 260 tekens limiet opgelegd door de MAX_PATH variabele.
Nu denkt u misschien: "Ah-hah! We veranderen gewoon de MAX_PATH-variabele en lossen het probleem op! "Helaas is het niet zo eenvoudig. Niet alleen is de variabele MAX_PATH in feite hard gecodeerd in Windows, maar zelfs als je door het enorme gedoe ging om het te veranderen, zou je uiteindelijk zoveel breken dat het het niet waard zou zijn. Te veel toepassingen verwachten dat de padvariabele is wat Windows al lang heeft opgegeven. We kunnen het niet zomaar veranderen, zonder een enorme puinhoop te creëren.
Waar verlaat dat jou? Welnu, de eenvoudigste oplossing is om alleen de padgegevens te bewerken. Als u bijvoorbeeld een hoop opgeslagen artikelen hebt, waarbij de toepassing / extensie die u gebruikte om ze op te slaan van het web een map heeft gemaakt die de volledige titel van het artikel + de artikellead was, en de bestandsnaam zelf de volledige titel is van het artikel + de artikelstart, zou het heel eenvoudig zijn om de MAX_PATH te raken of te overschrijden met een enkele opslag. Het is een gemakkelijke manier om het probleem op te lossen door die enorme map en artikeltitels te bewerken tot een redelijker formaat.
Als u een groot aantal bestanden met een lang pad hebt en u ze niet allemaal wilt bewerken (of als u dat wilt)verwijderen een ton oude mappen die te lang zijn voor Windows om mee om te gaan als deze wordt beperkt door de MAX_PATH variabele), er is een opdrachtregel rond. Hoewel Windows wordt beperkt door de variabele MAX_PATH, realiseerden Windows-technici zich dat er situaties zouden zijn waarbij gebruikers langere padnamen zouden moeten verwerken. Als zodanig heeft de Windows API een functie voor het omgaan met extreem lange paden.
Om te profiteren van die API en opdrachtregelprogramma's te gebruiken voor uw logge mappen / bestandsnamen, hoeft u alleen maar de mapnaam toe te voegen met een paar extra tekens. Als u bijvoorbeeld een enorme directorystructuur had die u wilde verwijderen (maar een fout ontving vanwege de padlengte toen u deze probeerde), kunt u de opdracht wijzigen in:
rmdir c:documentssome-really-super-long-folder-name-scheme
naar:
rmdir \?c:documentssome-really-super-long-folder-name-scheme
De sleutel is de toevoeging van de
?
gedeelte voor het begin van het bestandspad; dit geeft Windows de opdracht de beperkingen te negeren die zijn opgelegd door de MAX_PATH-variabele en om te werken met het pad dat je zojuist hebt opgegeven, zoals rechtstreeks door het onderliggende bestandssysteem wordt geleverd / begrepen (wat een langer pad duidelijk kan ondersteunen).Wees zoals altijd voorzichtig bij de opdrachtprompt om te voorkomen dat per ongeluk bestanden of mappen worden verwijderd die u intact wilde laten.
Als je nieuwsgierig bent naar ons overzicht van dit onderwerp, kun je dit artikel van de Microsoft Developer Network-bibliotheek, Bestanden, Paden en Namespaces benoemen, voor meer informatie over wat er zich onder de motorkap afspeelt, zeker onderzoeken.
Heeft u een dringende technische vraag? Schiet ons een e-mail op [email protected] en we zullen ons best doen om deze te beantwoorden.
Aanbevolen:
Hoe lang duren Solid State-schijven echt lang?
Toen grootschalige flashopslag voor het eerst op de consumentenmarkt kwam als alternatief voor conventionele harde schijven, was de grootste zorg (afgezien van de prijs) de levensduur. Technische fans hadden een redelijk goed idee van de algemene betrouwbaarheid van harde schijven, maar SSD's waren nog steeds een soort van wild card.
Wat is de map met Windows-contactpersonen en waarom hebt u deze nodig?
Windows heeft nogal wat speciale mappen en als je cloudopslag toevoegt, heb je waarschijnlijk meer. Hoe dan ook, ze zijn allemaal logisch, behalve de map Contactpersonen. Wat is de map Contactpersonen? Heeft het een doel dienen?
Waarom u de map van een programma niet gewoon naar een nieuw Windows-systeem (en wanneer u kunt) kunt kopiëren
Wanneer u naar een nieuw Windows-systeem gaat, nadat u een nieuwe computer hebt gekocht of Windows opnieuw hebt geïnstalleerd, bent u in de verleiding om de map van een programma naar uw nieuwe systeem te kopiëren, net zoals u uw bestanden zou kopiëren. Maar dit zal normaal niet werken.
Geef Recyle Bin weer in de map Computer of in deze map op de pc
U kunt Prullenbak plaatsen of weergeven in de map (Mijn) Computer of Deze pc in Windows 7, Windows 8.1, zoals ik dat altijd doe. Om dit te doen, open regedit en navigeer naar de volgende sleutel
Toon een bestand, map, programma in deze pc-map van Windows 10/8/7
U kunt desgewenst uw favoriete bestand of snelkoppelingen rechtstreeks weergeven in de map (Mijn) Computer van Windows 7 / Vista of Deze pc in Windows 10/8.