Nie je žiadnym tajomstvom, že Windows Explorer, podobne ako väčšina ostatných Windows aplikácií, vrátane PowerShell, nedokáže pracovať s objektmi súborového systému s hlbokým vnorením priečinkov. dĺžka cesty presahuje 260 znakov. Navyše toto obmedzenie existuje len na aplikačnej úrovni a samotný súborový systém NTFS podporuje cesty k súborom až do 32767 postavy.

Toto obmedzenie ukladá knižnica Win32 API a ktorého maximálna dĺžka cesty je 260 znakov ( MAX_PATH=260). Vo všeobecnosti sa cesta skladá z nasledujúcich prvkov: +[path_of_256_characters]+[ ] a maximálna dĺžka jedného adresára/súboru v systéme NTFS je 255 znakov v kódovaní Unicode. Pri použití funkcií Unicode API je možné použiť cestu k 32767 postavy. Vďaka tomu existuje veľa programov tretích strán (rovnakí populárni správcovia súborov, napr FAR A Úplný veliteľ) bez problémov spracuje súbory/priečinky, ktorých dĺžka cesty presahuje 260 znakov.

Poradenstvo. Toto obmedzenie rozhrania Win32 API môžete obísť a pracovať s dlhými názvami súborov pomocou formátu cesty UNC, pričom absolútnu cestu k súboru zadáte pomocou predpony cesty s predĺženou dĺžkou. \\?\ . Napríklad takto \\?\C:\SomeLongPath\LongNameFile.txt

Toto obmedzenie neplatí ani vtedy, keď majú používatelia sieťový prístup k súborom cez protokol SMB (kvôli tomu sú na súborových serveroch s používateľskými údajmi bežné adresárové štruktúry s dlhými cestami). Administrátor spravujúci tento server nemôže spravovať (odstrániť/presunúť) súbory s dlhými cestami cez štandardné rozhranie Windows Explorer. Pri pokuse o vytvorenie/skopírovanie súboru do takéhoto adresára sa zobrazí chyba:

Cieľová cesta je príliš dlhá. Názov súboru (názvov) by bol príliš dlhý pre cieľový priečinok. Môžete skrátiť názov súboru a skúsiť to znova, alebo skúste umiestnenie, ktoré má skrátenú cestu

Ostatné programy/dialógové okná môžu hlásiť prítomnosť obmedzenia vlastným spôsobom.

Súhlas, je smiešne, že je rok 2014 a stále sa bavíme o 260-znakovom limite maximálnej dĺžky cesty vo Windowse... Zdá sa však, že v blízkej budúcnosti sa neočakávajú žiadne drastické zmeny a dokonca ani v najnovšom Windows 10 Technical Preview toto obmedzenie stále existuje.

V tomto článku si ukážeme, ako môžete v systéme Windows pracovať so súbormi, ktorých cesta presahuje 260 znakov. V tomto prípade je našou úlohou vymazať adresár obsahujúci súbory s dlhou cestou.

Keď sa pokúsite odstrániť takýto adresár z Prieskumníka, zobrazí sa chyba:

Názvy súborov by boli príliš dlhé pre cieľový priečinok. Môžete skrátiť názov súboru a skúsiť to znova, alebo skúste umiestnenie, ktoré má skrátenú cestu.

Powershell tiež nedokáže správne spracovať adresáre a súbory s veľkými cestami presahujúcimi 260 znakov. Keď sa pokúsite odstrániť adresár s takýmito súbormi (C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath), zobrazí sa chyba:

Remove-Item .\verylongpath -Recurse

Remove-Item: Zadaná cesta, názov súboru alebo oboje sú príliš dlhé. Úplný názov súboru musí byť menší ako 260
znakov a názov adresára musí mať menej ako 248 znakov.
Na riadku:1 znak:1
+ Remove-Item .\verylongpath -Recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: WriteError: (C:\Install\MS S...it\verylongpath:String) , PathTooLongExcepti
na
+ FullyQualifiedErrorId: RemoveItemIOError,Microsoft.PowerShell.Commands.RemoveItemCommand

Najjednoduchšou možnosťou (v skutočnosti sa navrhuje v okne chyby) je skrátiť názov nadradených priečinkov, čím sa skráti celková dĺžka cesty (nie vždy to však platí).

Mklink /d c:\install\link “C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath”

Ďalšou možnosťou, ktorá pripomína prácu so symbolickým odkazom, je namapovanie problematického priečinka na virtuálny disk (v našom príklade X:), čím sa tiež zníži dĺžka cesty:

Subst X: „C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath“

Teraz môžete pracovať s údajmi na disku X:, cesty k súborom, v ktorých nepresiahnu limit. Po dokončení práce môžete virtuálny disk odstrániť:

Subst X: /d

Osobne sa mi však na úlohe odstraňovania údajov v takýchto situáciách najviac páči schopnosť robocopy.exe, ktorý podporuje prácu s dlhými cestami.

Pomocou možnosti /MIR, nástroj robocopy môže vytvoriť úplnú kópiu (mirror) zdrojového adresára v cieľovom adresári. A ak je zdrojový priečinok prázdny, vymažú sa aj všetky údaje v cieľovom priečinku. Vytvorme prázdny priečinok C:\Install\test a pomocou argumentu /MIR skopírujte obsah testovacieho priečinka do cieľového priečinka (ak názov priečinka obsahuje medzery alebo znaky cyriliky, cesta musí byť uzavretá v úvodzovkách).

Robocopy /MIR C:\Install\test "C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath"

Po vykonaní príkazu sa obsah adresára C:\Install\MS SQL 2012 Express Edition 64 bit\verylongpath vymaže (nahradí sa obsahom prázdneho adresára).

Dnes sme si teda ukázali niekoľko jednoduchých trikov, ktoré môžete použiť pri práci s priečinkami na súborových serveroch, ktoré obsahujú priečinky, ktorých dĺžka cesty presahuje limit 260 znakov.

Názov sa ukázal byť dlhý, ale naznačuje podstatu problému, ktorý tu bude popísaný. Nedávno som sa stretol s nie veľmi dobrou situáciou. Pri triedení pevného disku a odstraňovaní nepotrebných vecí som zistil, že jeden zo súborov nebol odstránený, ale objavila sa nasledujúca chyba: „Súborový systém nepodporuje také dlhé názvy zdrojových súborov. Skúste presunúť súbor do priečinka s kratšou cestou alebo zadajte kratší názov súboru a skúste to znova."

Nielenže sa mi nepodarilo odstrániť súbor, ale ani zmeniť názov na kratší názov. Pre mnohých by sa to zdalo ako slepá ulička, pretože sa ukazuje, že súbor nie je vymazaný.

V skutočnosti sa problém dá vyriešiť veľmi jednoducho a rýchlo a teraz popíšem dva spôsoby jeho riešenia a je len na vás, ktorý z nich použijete.

Čo robiť, ak je cesta k zdroju príliš dlhá, ako takýto súbor odstrániť?

Ak máte súbor, ktorý nie je odstránený kvôli dlhému názvu, existuje niekoľko možností, ako problém vyriešiť. Napríklad súbor je vnorený do niekoľkých adresárov, povedzme piatich alebo dokonca desiatich priečinkov, ktoré majú názvy 10-20 znakov, potom to môže byť dôvod na nevymazanie súboru. Faktom je, že systém Windows nepodporuje žiadne súbory, ktorých názvy majú viac ako 260 znakov. Ak je tento limit prekročený, objaví sa chyba, ktorú som ukázal vyššie. Celkový počet priečinkov s vlastnými názvami a samotným názvom súboru by mal byť menší ako 260 znakov. Systém má aj jednu vlastnosť – pri prekročení tohto limitu môžeme priečinky stále premenovať. To znamená, že musíte premenovať všetky priečinky na krátky názov, napríklad písmeno alebo číslo.


Tento problém môže vzniknúť nielen preto, že ste dali taký dlhý názov. Stalo sa mi to, keď som sa rozhodol stiahnuť súbory webových stránok zo servera a niečo urobiť. Keďže súbory už neboli potrebné, vymazal som celý adresár so súbormi lokality, no ako sa ukázalo, obsahoval súbor s veľmi dlhým názvom, plus názvy priečinkov, a to mi nedovolilo ho celý vymazať.

Metóda dva pomôže, ak prvý zlyhal. Faktom je, že nie všetky priečinky vedúce k súboru s dlhým názvom sa dajú premenovať a vyskytne sa rovnaká chyba systému súborov. Potom môžete vytvoriť virtuálny disk pomocou ktoréhokoľvek z podpriečinkov vedúcich k neodstrániteľnému súboru. Teraz vám ukážem, ako to urobiť.

Otvorte príkazový riadok. Ak to chcete urobiť, stlačte kombináciu Win + R a zadajte príkaz cmd. Môžete kliknúť pravým tlačidlom myši na ponuku Štart (alebo na kombináciu klávesov Win + X) a vybrať príkazový riadok.

Teraz napíšete príkaz, ktorý nám vytvorí virtuálny disk:

Musíte vybrať písmeno jednotky, ktoré nie je obsadené inými. Systémový oddiel je zvyčajne označený ako C a druhý oddiel ako D alebo E, potom vyberte ktorýkoľvek iný.

Cesta k priečinku musí byť zadaná z disku. Ak je to pre vás ťažké, otvorte priečinok, ktorý bude fungovať ako virtuálny disk, a skopírujte k nemu cestu v Prieskumníkovi v hornej časti.

Môj príkaz vyzerá takto:

Keď prejdeme na Tento počítač, mali by ste tam vidieť jednotku s písmenom, ktoré sme jej priradili z príkazového riadku. Cesta k súboru sa teda skráti takmer o polovicu, čo znamená, že celková dĺžka znakov môže byť menšia ako 260 znakov. Teraz sa môžete pokúsiť zbaviť sa neodstrániteľného.


Ak chcete odstrániť virtuálny disk, musíte zadať príkaz:

substDiskLetter/d

Používanie programu Total Commander

Na internete som objavil metódu, ktorá umožňuje mazať súbory, ktoré sa nedajú odstrániť pomocou . Samozrejme, nevýhodou je, že do počítača budete musieť nainštalovať ďalší softvér a nie každý to bude chcieť urobiť. V každom prípade tu túto metódu nechám pre prípad, že by ju niekto chcel použiť.

Stiahnite si a nainštalujte program. Poďme na kartu "súbor" kliknite na sekciu "Zmeniť atribúty". Zobrazí sa okno, v ktorom odstránime začiarknutie zo všetkých atribútov. Ak vedľa položky v hornej časti nie je začiarknutie "Spracovať obsah adresára"- vybrať si. Teraz z toho istého programu sa pokúsime odstrániť súbor s dlhým názvom.


Používame archivátor 7-Zip

Pre túto úlohu budeme potrebovať 7-Zip archivátor. Kliknite pravým tlačidlom myši na počiatočný adresár a ukážte myšou na oddiel "7-Zip" a vyberte položku "Pridať do archívu".

Zobrazí sa okno, v ktorom stačí zaškrtnúť jedno políčko. "Vymazať súbory po kompresii". Potom kliknite na tlačidlo OK.

Na pracovnej ploche sa vytvorí archív všetkých týchto vecí a priečinky s dlhými súbormi sa jednoducho odstránia. Samotný archív môžete bez problémov odstrániť.

Toto sú spôsoby, ktorými sme sa zamerali na opravu chyby, ktorá sa neodstráni. Možno máte iné možnosti, ako to urobiť?

Tu je príklad štruktúry priečinkov, ktorú som nazval „veľká bábika“:

Ako vidíte, na jednotke „D“ (Data) je priečinok zdrojového videa, v ňom je priečinok „Filmy“, v ňom je „Všetko, čo potrebujete na sledovanie filmov“ a potom rovnakým spôsobom priečinok v priečinku. Zároveň má veľa priečinkov dlhé názvy a názvy - viac ako 10-15 znakov, čo celkovo dá objem znakov vo všetkých menách viac ako 260. A ak na konci takejto „matriošky“ existuje súbor, potom sa môže ukázať, že s ním nemôžete pracovať môžete... Niekedy vám samotný systém nedovolí vytvoriť priečinok alebo súbor, ktorý prekračuje povolený počet znakov, ale niekedy sa to z nejakého dôvodu stane.

Najprv pre začiatočníkov vysvetlím, čo je cesta k súboru a priečinku. Cesta je takzvaná adresa v počítači, kde sa súbor alebo priečinok nachádza. Napríklad súbor s názvom „My file.txt“ sa nachádza na lokálnom disku D: v priečinku „Documents“. Potom bude cesta k tomuto súboru vyzerať takto:

D:\Dokumenty\Môj súbor.txt

Alebo napríklad takto bude vyzerať cesta z príkladu vyššie, kde som ukázal zložitú štruktúru priečinkov.

Ako vidíte, počet znakov v ceste vyššie je veľký a je možné, že na konci bude súbor alebo priečinok s dlhým názvom, ktorý nemôžete odstrániť.

Keď sa pokúsite odstrániť súbor s dlhým názvom cesty, zobrazí sa okno s chybou, ako je táto:

Snažil som sa umelo obnoviť problém a toto je to, čo som dostal.

Na jednotke „D“ som vytvoril priečinok s krátkym názvom „1“ a umiestnil som doň súbor s veľmi dlhým názvom. Tu je príklad:

Teraz tiež premenujem priečinok „1“ na nejaký veľmi dlhý názov, napríklad:

Zaujímavé je, že Windows voľne umožňuje premenovať priečinok na taký dlhý názov, napriek tomu, že počet znakov v názve tohto priečinka + názov súboru už presahuje 260! Po premenovaní priečinka na dlhý názov už nemôžem odstrániť súbor, ktorý sa v ňom nachádza, a zobrazí sa chyba.

Alebo tu je ďalší príklad... Spravujem webovú stránku Moskovskej inštrumentárnej školy, kde som predtým pracoval na plný úväzok, a niekedy používam kópiu stránky na svojom počítači na testovanie nových „dobrôt“ pre stránku. Čo ak nainštalujem niečo zlé a web na hostingu zomrie? :) A tak to skontrolujem v počítači a ak je všetko v poriadku, tak si to nastavím na reálnej stránke umiestnenej na hostingu. Raz som teda preniesol celú stránku z hostingu, aby som otestoval jednu vec a po skončení práce som sa rozhodol priečinok so stránkou vymazať z počítača. Koniec koncov, váži asi 6 GB. Celý web bol odstránený, okrem niekoľkých priečinkov. Začal som hľadať a zistil som, že tie priečinky, ktoré obsahovali súbor s dlhým názvom vo forme hieroglyfov, neboli odstránené:

Pokúsil som sa znova vymazať tento súbor s dlhým názvom a videl som rovnakú chybu, ktorú som uviedol vyššie. Skúšal som to premenovať, ale ani to nejde. No musel som sa zamyslieť nad tým, ako problém vyriešiť.

Ako vyriešiť problém s odstránením priečinka/súboru s dlhým názvom cesty!

Vyskúšal som 2 spôsoby, ako odstrániť priečinok/súbor s dlhým názvom v ceste k nemu. Obe nie sú technicky náročné (hlavne 1.), takže si myslím, že začiatočník to zvládne, ak urobí všetko presne tak, ako ukazujem:

    Premenujte viacero priečinkov v ceste k súboru na kratší názov. Toto je najjednoduchšie riešenie, ktoré by už malo pomôcť mnohým! Predpokladajme, že máte súbor v priečinku s veľmi dlhým názvom, ktorý nemôžete odstrániť, otvoriť, skopírovať a vo všeobecnosti s ním nemôžete pracovať.

    Potom skúste jednoducho premenovať priečinok, v ktorom sa nachádza súbor s dlhým názvom, napríklad na „1“. Dovoľte mi vrátiť sa k jednému z vyššie uvedených príkladov. Tu je priečinok s dlhým názvom:

    Pomocou štandardného Prieskumníka Windows premenujem názov tohto priečinka na „1“ a takto teraz vyzerá cesta k súboru:

    Teraz môžete so súborom bezpečne pracovať, systém vám ho umožní otvoriť, premenovať a vymazať.

    Ak máte dlhý strom priečinkov, t.j. ako hniezdiaca bábika, v jednej zložke je ďalšia, v nej je ďalšia, potom ďalšia, potom začnite premenovať od úplne prvej zložky z tejto hniezdnej bábiky. Nie s posledným na zozname, ale s prvým!

    Môže sa stať, že existuje veľké množstvo priečinkov a niektoré z nich nebudete môcť premenovať kvôli rovnakej chybe alebo vám to zaberie veľa času. V tomto prípade navrhujem druhú metódu.

    Metóda spočíva v tom, že môžete vziať nejaký priečinok napríklad uprostred spoločného stromu a pripojiť ho ako virtuálny disk. Virtuálny disk je niečo, čo nám pripomína bežný lokálny disk, ale čo je jednoducho zviazané s konkrétnym priečinkom, napríklad pre rýchlu interakciu s ním.

    Povedzme, že máte dlhú cestu, ako je táto:

    D:\Video\Moje filmy\Všetko, čo potrebujete na pozeranie filmov\Programy na pozeranie filmov\Ako otvárať filmy vo formáte MP4\Zoznam ukážkových filmov vo formáte MP4\Zoznam programov na otváranie súborov MP4\Čo nerobiť pri otváraní súborov MP4

    Predpokladajme, že v úplne poslednom priečinku máme nejaký problémový súbor, s ktorým nevieme pracovať, keďže cesta k nemu, ako vidíme, je dosť dlhá :)

    Môžeme vziať a pripojiť jeden z priečinkov s dlhým názvom v strede cesty ako virtuálny disk. Nech je to priečinok „Programy na sledovanie filmov“.

    Na pripojenie virtuálneho disku potrebujeme takzvaný príkazový riadok Windows, t.j. konzoly.

    Môžete ho otvoriť pomocou vyhľadávania systému Windows. Do vyhľadávania zadajte „Príkazový riadok“:

    V okne príkazového riadku musíme zadať príkaz:

    subst virtual_disk_letter "cesta_k_priecinku"

    Môžete nastaviť ľubovoľné písmeno jednotky, pokiaľ už nie je obsadené niektorým z miestnych jednotiek. Napríklad máte lokálnu jednotku C a D, čo znamená, že už nemôžete volať virtuálnu jednotku s rovnakým písmenom. Môžete ho nazvať napríklad písmenom „X“, pretože sa v systéme Windows používa zriedka.

    Pre cestu k priečinku vložíte cestu k priečinku, ktorý chcete pripojiť ako virtuálny. Ako som už povedal, v mojom príklade vytvoríme „Programy na sledovanie filmov“ ako virtuálny priečinok, čo znamená, že cestu je potrebné zadať takto:

    D:\Video\Moje filmy\Všetko, čo potrebujete na sledovanie filmov\Programy na sledovanie filmov\

    Takže konečný príkaz v mojom prípade bude vyzerať takto:

    subst X: „D:\Video\Moje filmy\Všetko, čo potrebujete na sledovanie filmov\Programy na sledovanie filmov\“

    Ak chcete vykonať zadaný príkaz, stlačte kláves „Enter“ na klávesnici. Vytvorí sa virtuálny disk.

    Teraz poďme do Prieskumníka Windows, prejdite do časti „Tento počítač“ (alebo „Počítač“) a pozrime si tam vytvorený virtuálny disk:

    Môžete ho rozlíšiť podľa písmena. Virtuálnemu disku som priradil písmeno „X“. Ak teraz otvoríme tento virtuálny disk, okamžite sa ocitneme v priečinku „Programy na sledovanie filmov“. Tie. zobrali sme a odrezali polovicu cesta k finálnemu priečinku.

    Na porovnanie...

    Predtým cesta k finálnemu priečinku vyzerala takto:

    D:\Video\Moje filmy\Všetko, čo potrebujete na pozeranie filmov\Programy na pozeranie filmov\Ako otvárať filmy vo formáte MP4\Zoznam ukážkových filmov vo formáte MP4\Zoznam programov na otváranie súborov MP4\Čo nerobiť pri otváraní súborov MP4

    Po pripojení virtuálneho disku k priečinku „Programy na sledovanie filmov“ vyzerá cesta k finálnemu priečinku takto:

    X:\Ako otvárať filmy MP4\Zoznam vzorových filmov MP4\Zoznam programov na otváranie MP4\Čo nerobiť pri otváraní súborov MP4

    Cítiš ten rozdiel? Cesta je skrátená na polovicu, keďže písmeno jednotky nás okamžite nasmeruje do priečinka v strede cesty :) A keďže je cesta značne skrátená, pravdepodobne ste teraz odstránili obmedzenie počtu znakov v názvoch súborov a priečinkov a budete byť schopný odstrániť súbor alebo priečinok s dlhým názvom!

    Po vyriešení problému so súborom je možné virtuálny disk znova vymazať, aby sa z neho v Prieskumníkovi nestali oči.

    Ak to chcete urobiť, znova otvorte príkazový riadok systému Windows a zadajte príkaz:

    Subst virtual_disk_letter /d

    V mojom prípade je písmeno jednotky „X“, takže príkaz bude vyzerať takto:

Keď som premýšľal nad možnosťami riešenia problému, ako odstrániť priečinok alebo súbor s dlhým názvom, našiel som na internete ďalšiu možnosť: odstrániť problematický súbor cez program Total Commander. Skúšal som to, nevyšlo to, preto som túto metódu neodporúčal :)) A metóda, aj keď by niekomu fungovala, úprimne nie je zábavná, pretože si musíte do svojho počítača nainštalovať dodatočný program. počítač, aby ste odstránili iba jeden súbor alebo priečinky s dlhým názvom...

Myslím si, že ak sa vyskytne podobný problém, ktorý som mal už viackrát, určite vám pomôže niektorá z vyššie popísaných metód.

To je všetko! Do skorého videnia v ďalších článkoch ;)

Bráni vám škodlivý operačný systém Windows vo vymazaní súboru a kričí, že jeho zdrojová cesta je príliš dlhá? V tomto článku vám poviem, ako ľahko a jednoducho, bez akýchkoľvek programov, poraziť túto pohromu skrátením názvu súboru.

Cesta k zdroju je príliš dlhá – prečo?

Chcel by som hneď vysvetliť, prečo sa takéto systémové varovanie zobrazuje a nie je možné vykonať základné kopírovanie alebo mazanie súboru (priečinku)…

Samotné upozornenie obsahuje odpoveď na túto otázku – súborový systém Windows nepodporuje (nerozumie) názvom zdrojových súborov dlhším ako 255 znakov.

Ale názov vášho súboru alebo priečinka je krátky, napríklad „Fotografie z dovolenky“? Faktom je, že „hlúpy“ systém vníma celú cestu k súboru ako jeho názov. Ak sa váš súbor alebo priečinok nachádza niekde príliš hlboko v správcovi súborov, jeho názov bude vyzerať asi takto...

Takže symboly mien sú zhromaždené do skupiny viac ako 255 kusov.

Ako v tomto prípade odstrániť neodstrániteľný súbor alebo priečinok? Je to veľmi jednoduché - musíte skrátiť názov súboru (cestu) premenovaním vnorených priečinkov.

Ako odstrániť súbor s dlhým názvom

Na mojom príklade vám ukážem, ako odstrániť súbor s dlhým názvom, ktorý, ako píše systém, má príliš dlhú cestu k zdroju.

Včera som sa rozhodol vyčistiť počítač zo starých záložných kópií stránky, ale nechceli byť odstránené. Ako ste uhádli, objavilo sa varovanie, že cesta k zdroju je príliš dlhá...

Počnúc úplne prvým priečinkom na tejto dlhej ceste som premenoval niekoľko vecí...

...a znova sa pokúsil zbaviť súboru s teraz kratším názvom - bezpečne sa dostal do krajiny zmazaných súborov.

Prirodzene, nový názov súboru (priečinku) by mal pozostávať z jedného znaku alebo čísla, ako v mojom príklade.

Takto je jednoducho vyriešený problém s odstraňovaním súborov alebo priečinkov s dlhým názvom. Toto samozrejme nie je jediná metóda. Môcť odstrániť pomocou špeciálnych programov alebo cez register - práve som ukázal manuálny spôsob. Niektorým to zaberie len minútu, iným pol hodiny – je len na vás, ako skrátiť názov súboru a príliš dlhú cestu k zdroju.

Až po nové užitočné tipy a zaujímavé počítačové programy.