Je to taková trochu absurdní situace. Potřebujete smazat soubor, ale Windows vám ho smazat odmítá. Stěžuje si, že příliš dlouhé jméno. Všechno přitom v zásadě normálně funguje, jen ten soubor se ne a ne nechat smazat. Řešení je přitom jednoduché, stačí se vrátit do starých času, kdy soubory mohly mít pouze jméno o osmi znacích a k tomu tři znaky přípony.
Divíte se? Nedivte, ve starých časech DOSu tomu tak bylo. Až později přišly Windows 95 a souborový systém (o tom něco víc v Co je to exFAT, NTFS, FAT32?) se naučil jména souborů dlouhá až 255 znaků. Aby se zachovala kompatibilita, každý soubor ve Windows má vedle svého „skutečného dlouhého jména“ přiděleno ještě to krátké. Což můžete využít k smazání těch, jejichž jméno tomu brání – ať už délkou (ať už jména souboru, nebo kombinace jména souboru a cesty k souboru). nebo třeba nějakým divným znakem.
Stačí si otevřít příkazovou řádku a přejít do složky, kde je soubor, který chcete smazat (což můžete udělat pokud v Průzkumníkovi souborů máte otevřenu onu složku a s pomocí Shift si vyvoláte kontextové menu a tam najdete možnost otevřít příkazovou řádku přímo v oné složce). Pak už si jenom musíte zjistit, jaké krátké jméno, má soubor přidělené – to jde pomocí příkazu dir s parametrem /X (můžete ještě přidat /P pro případ, že ve složce je hodně souborů). Krátká 8.3 názvy uvidíte vlevo od názvu plných.
Jakmile zjistíte krátké jméno souboru, postačí použít příkaz del s parametrem v podobě zjištěného jména. A soubor bude smazán.
Pokud žádná 8.3 jména nevidíte, tak je to proto, že výchozí stav „povoleno“ může být pouze na systémových discích nebo daný disk nemá povoleno. K zjištění stavu můžete na příkazové řádce použít fsutil 8dot3name query (0= povoleno všude, 1=zákaz všude, 2=povoleno/zakázáno podle svazu a 3=zakázáno všude, jen na systémovém povoleno).
Povolit pro všechny svazky (disky) lze pomocí fsutil behavior set disable8dot3 0
Povolit pro konkrétní disk pomocí fsutil behavior set disable8dot3 <DriveLetter>: 0
Při psaní jména si bohužel moc nemůžete pomoci automatickým doplňováním (napsat pár prvních písmen a mačkat TABulátor), protože tím se doplní dlouhé jméno. A znak s vlnovkou, který Windows používají, se dá mimochodem napsat jako pravý Alt a k tomu 126 na numerické klávesnici.
Extra situace ještě může nastat, kdy se vám na disku objeví soubory pojmenované názvy systémových zařízení (COM, NUL, LPT, AUX atd). Jděte na to přes (příklad)
del "\\.\%temp%\nul"
PS: Ve Jak smazat soubor, o kterém Windows píše, že ho něco používá? se řeší trochu jiný, ale ještě zapeklitější problém. A v Co je to ten DOS? A příkazová řádka? zjistíte více o tom, co se dá dělat v příkazové řádce.
DODATEK: Josef Kytnar píše (a je to dobrý postřeh): Postup příliš složitý. Jednodušší je „dlouho-jmenný“ soubor prostě přejmenovat na jakékoli krátké jméno. Také je potřeba vědět, že délkové omezení se vztahuje na celou cestu k souboru. Takže tato situace nastává nejčastěji po přesunu souboru do podadresáře někde hlouběji v adresářovém stromu. Váš typ bych použil v případě, že nelze smazat ani po přejmenování (nebo nelze přejmenovat). Ale zatím se mi to nestalo.