Jak opravit problém „Název souboru je příliš dlouhý“ v systému Windows

Pokud jste se s tímto problémem někdy setkali, pravděpodobně to pro vás byla jednoduchá oprava. Pokud jste tuto chybu viděli více než dvakrát, pak také víte, že její oprava může být někdy složitá.

Doufejme, že narazíte jen na tu jednodušší variantu opravy, ale připravíme vás i na ty méně jednoduché, zaručeně fungující opravy.

Proč je délka názvu souboru v systému Windows vůbec problémem?

Délka názvů souborů je pro operační systémy, jako je Windows, problémem již dlouho. Bývaly doby, kdy jste nemohli mít názvy souborů delší než 8 znaků plus tříznakovou příponu souboru. Nejlepší, co jste mohli udělat, bylo něco jako myresume.doc. Toto omezení vyplývalo z návrhu souborového systému.

S příchodem nových verzí systému Windows se situace zlepšila. Ze starého, omezeného souborového systému jsme přešli na něco, co se nazývá souborový systém NTFS (New Technology File System). Systém NTFS nás dovedl k tomu, že název souboru mohl mít 255 znaků a délka cesty k souboru mohla potenciálně dosáhnout až 32 767 znaků. Jak je tedy možné, že máme příliš dlouhé názvy souborů?“

Systém Windows má věci známé jako systémové proměnné. Jsou to proměnné, na jejichž fungování se systém Windows spoléhá, protože Windows bude vždy vědět, co proměnné znamenají a kde se nacházejí, i když budeme všude přesouvat bity a bajty. Systémová proměnná MAX_PATH je ta, která omezuje názvy souborů a cesty k nim na méně než 260 znaků.

Jelikož je to proměnná, mysleli byste si, že ji můžeme změnit. Ne, neměli bychom. Bylo by to jako vytahovat nit ze svetru. Jakmile se změní jedna systémová proměnná, začnou se rozplétat další systémové proměnné a na nich závislé komponenty.

Jak to tedy opravíme?

Snadná oprava

Pokud budete mít štěstí, zobrazí se chyba a budete přesně vědět, jaký název souboru způsobuje problém. Nebo alespoň kde soubor najít. Možná máte název souboru, který vypadá nějak takto:

C:\User\guymc\Documents\My Resumesresumewithanamesolongthatitcausesproblemsandbecomespartofsomeguysarticleonthewebhowdoyoulikemenow.docx

Je zřejmé, kdo je v tomto případě pachatelem. Najděte soubor v Průzkumníku Windows nebo v Průzkumníku souborů, jak se jmenuje ve Windows 10, jednou na něj klikněte, stiskněte klávesu F2 pro přejmenování a změňte ten hloupý název souboru na něco rozumnějšího. Problém je vyřešen.

Méně snadné opravy

Ne vždy je oprava tohoto problému tak snadná. Někdy se může stát, že z nějakého důvodu nebudete moci změnit názvy souborů nebo adresářů.

Následující řešení vám pomohou. Nejsou nijak složitá.

Přesun, odstranění nebo kopírování souborů nebo adresářů pomocí prostředí PowerShell

Při pokusu o přesun, odstranění nebo kopírování adresářů, kde je počet znaků pro cestu k souboru větší než 260, se někdy objeví chyba.

Všimněte si, že slova adresář a složka jsou zaměnitelná. Napříště budeme používat ‚adresář‘. Následující rutiny prostředí PowerShell lze použít i na soubory:

Možná cesta k souboru vypadá takto:

C:\Users\guymc\Documents\This\Is\Exactly\The\Precise\Directory\Path\That\I\Need\To\Have\To\Keep\My\Files\Sorted\In\A\Manner\That\Makes\Sense\To\Me\So\Lets\Pretend\This\Is\An\Actual\Filepath\That\You\Might\Also\Have\On\Your\Windows\Computer\And\Not\Over\Think\It\Document.docx

Tato cesta k souboru má 280 znaků. Nemůžeme tedy adresář odtud zkopírovat někam jinam běžnou metodou kopírování a vkládání. Dostaneme chybu Příliš dlouhá cílová cesta.

Předpokládejme, že z nějakého důvodu nemůžeme přejmenovat adresáře, v nichž je soubor vnořen. Co uděláme?

Otevřete prostředí PowerShell. Pokud jste prostředí PowerShell ještě nepoužívali, přečtěte si náš článek Používání prostředí PowerShell pro domácí uživatele – průvodce pro začátečníky. Další kroky však můžete provést i bez přečtení článku.

Po otevření prostředí PowerShell se budete nacházet v kořenovém adresáři svého uživatele. Postupujte podle předpokladu, že vaším uživatelským adresářem je C:\Users\guymc.

Adresář s názvem To se nachází uvnitř adresáře Dokumenty. Pro přesun do adresáře Dokumenty použijeme příkaz DOS cd Dokumenty.

Uvidíte, že se výzva změní na C:\Users\guymc\Dokumenty. To je dobře. Pracujeme blíže k adresářům, což nám usnadní práci.

Kopírování adresáře pomocí položky Kopírovat

Chceme zkopírovat adresář To a jeho obsah do složky ToNové. Použijeme rutinu PowerShell Copy-Item s parametry -Destination a -Recurse.

-Destination říká prostředí PowerShell, kam chceme kopii umístit. Parametr -Recurse říká prostředí PowerShell, aby zkopírovalo všechny položky uvnitř do místa určení. Kopírování ponechá originály tam, kde jsou, a v cíli vytvoří všechny nové.

Copy-Item This -Destination ThatNewFolder -Recurse

Přesun adresáře pomocí Move-Item

Řekněme, že chceme přesunout adresář This a všechny adresáře a soubory v něm do ThatNewFolder. Při přesunu nezůstane původní adresář na svém místě.

Můžeme použít rutinu prostředí PowerShell Move-Item s parametry -Path a -Destination. Parametr -Path definuje položku, kterou chceme přesunout, a parametr -Destination říká prostředí PowerShell, kam ji chceme přesunout.

Komentář vloží položku This do složky ThatNewFolder. Zároveň přesune vše, co se nachází uvnitř adresáře This. Příkaz Move-Item lze použít k přesunu souborů nebo adresářů a funguje bez ohledu na cestu k souboru nebo délku názvu souboru.

Move-Item -Path This -Destination ThatNewFolder

Chcete-li se ujistit, že příkaz funguje, použijte příkaz cd ThatNewFolder, abyste se dostali do ThatNewFolder. Poté použijte příkaz dir pro výpis adresářů ve složce ThatNewFolder. Uvidíte, že adresář This je v něm.

Odstranění adresáře pomocí příkazu Remove-Item

Pokud chceme odstranit adresář This a vše, co se v něm nachází, použijeme rutinu Remove-Item.

Komanda Remove-Item má zabudovanou určitou bezpečnost, která ztěžuje odstranění adresáře s věcmi uvnitř. V našem příkladu víme, že chceme odstranit vše, takže použijeme parametry -Recurse, aby příkaz odstranil vše uvnitř, a -Force, aby to udělal, aniž by se nás zeptal, zda jsme si jisti pro každou položku uvnitř.

Buďte varováni! Obnovení všeho, co bylo tímto způsobem smazáno, by bylo nesmírně obtížné. Můžete zkusit metody uvedené v článku Jak obnovit náhodně smazané soubory, ale moc od toho nečekejte.

Remove-Item This -Recurse -Force

Můžete znovu použít příkaz dir, abyste se ujistili, že je to pryč.

Přimět systém Windows 10, aby akceptoval dlouhé cesty k souborům

Pokud víte, že budete opakovaně používat dlouhé cesty k souborům a dlouhé názvy souborů, je snazší přimět systém Windows, aby pracoval za vás. Nemá smysl používat prostředí PowerShell ke každodenní práci.

Můžeme to udělat dvěma způsoby. Jeden je určen pro uživatele systému Windows 10 Home a druhý pro uživatele systému Windows 10 Pro nebo Enterprise. Tyto způsoby mohou fungovat i v systému Windows 8.1 nebo starším, ale nemůžeme to zaručit.

Přimět systém Windows 10 Home, aby akceptoval dlouhé cesty k souborům

Chceme-li systém Windows 10 Home přimět, aby akceptoval dlouhé cesty k souborům, musíme otevřít Editor registru. Pokud jste v Editoru registru dosud nepracovali, buďte opatrní. Náhodné odstranění nebo změna věcí v něm může zcela zastavit fungování systému Windows.

Před prováděním jakýchkoli změn si vždy vytvořte zálohu registru. Vše, co o tom potřebujete vědět, se dozvíte v našem dokonalém průvodci zálohováním a obnovou registru systému Windows.

Po otevření Editoru registru a vytvoření zálohy přejděte do umístění HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem a vyhledejte klíč LongPathsEnabled.

Dvakrát klikněte na LongPathsEnabled. V poli Údaje o hodnotě: se ujistěte, že je v něm číslo 1. Kliknutím na tlačítko OK změnu odevzdejte.

Ukončete Editor registru a nyní byste měli být schopni pracovat s šíleně dlouhými cestami k souborům.

Přinutit systém Windows 10 Pro nebo Enterprise přijímat dlouhé cesty k souborům

Chceme-li systému Windows 10 Pro nebo Enterprise povolit používání dlouhých cest k souborům, použijeme Editor zásad skupiny. Je to nástroj, který nám umožňuje nastavit zásady fungování systému Windows na úrovni počítače a uživatele.

O použití zásad skupiny, například o zakázání nebo povolení možností aplikace Internet Explorer nebo o přidání zprávy na přihlašovací obrazovku, jsme psali v několika článcích.

Otevřete Editor zásad skupiny tak, že přejdete do nabídky Start a zadáte příkaz gpedit. Jako horní výsledek by se měla zobrazit položka Upravit zásady skupiny. Poklepejte na něj.

Po otevření Editoru zásad skupiny přejděte do části Konfigurace počítače > Šablony pro správu > Systém > Souborový systém. Tam uvidíte zásadu Povolit dlouhé cesty Win32.

Dvakrát na ni klikněte a upravte nastavení této zásady. Změňte jej ze Zakázáno na Povoleno a kliknutím na tlačítko OK změnu potvrďte.

Zásada se nemusí projevit hned. Můžete však vynutit aktualizaci zásad skupiny.

To je vše

Existují i další způsoby, jak obejít dlouhé názvy souborů a cesty k nim, ale to, co jsme zde prošli, jsou nejjednodušší a nejúčinnější metody.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.