Jak tučňák vydrbal s woknama aneb Když má soubor v názvu dvojtečku
Pokud byste to náhodou nevěděli, tak operační systémy Microsoft nemohou mít v názvech souborů dvojtečky proto, že jde o vyhrazený znak pro určení jednotky v cestě k souboru či složce (dříve adresáři). Je-li zkrátka v cestě napsáno C:\WINDOWS, znamená to, že co je před dvojtečkou, je písmeno jednotky. Může to být pouze jedno písmeno, neboť systémy Windows jsou už od dob DOSu omezeny na základní znaky abecedy. Nejde tak udělat víc jak 26 diskových jednotek (pokud jsou další, musí se namapovat jako složky na nějaké existující jednotce, případně se k síťovým jednotkám musí přistupovat přes UNC cesty, což ještě pořád ne každá aplikace chápe).
Soubor se tedy nemůže jmenovat třeba Snímek obrazovky pořízený 2014-01-31 16:33:27.png. Systém Windows s takovým souborem neumí pracovat, protože je naprogramován tak, že co je před dvojtečkou, označuje jednotku a název jednotky Snímek obrazovky pořízený 2014-01-31 16 zkrátka není platný.
Mně se samozřejmě podařilo takové soubory nedopatřením vytvořit. Pochopitelně ne ve Windows. Soubory takového jména vyrábí mnohé linuxové distribuce při vytváření snímků obrazovky klávesou PrintScreen. Mně to samozřejmě zavčasu nedošlo, přišel jsem na to až poté, co jsem soubory v linuxu v poklidu zkopíroval na pevný disk (formátovaný NTFS) a pak se jal s těmito soubory pracovat ve Windows. A ouha, ono to (zcela samozřejmě) nešlo.
Dumal jsem, jak to vyřešit, aniž bych musel znovu do linuxu a nemusel stahovat nějaký nástroj, který by to opravil na úrovni editace údajů souborového systému. Jasně, v linuxu bych to prostě přejmenoval a pak by se s tím dělat dalo. Jenže mně se do linuxu nechtělo, protože cvičnou instalaci jsem si jednorázově stáhl na flešku, udělal pár souborů a zase smazal, takže bych musel znovu sosat.
Ve Windows s takovými soubory samozřejmě neuděláte vůbec nic. Nejdou přejmenovat, otevřít, nejdou ani smazat, protože systém je zkrátka neumí uchopit. Umí nanejvýš říci, že na disku jsou a že mají takové a takové jméno, velikost, datum a další atributy. Jinak s nimi ale nejde dělat nic. Ani žádným Total Commanderem nebo něčím podobným, všechno se to spoléhá na systém a ten je z toho paf.
Abych řekl úplnou pravdu, moc možností jsem nezkoumal. Nakonec jsem to Ubuntu stejně znovu stáhl a nahodil na flešku, ale přesto mě zajímalo, jestli s tím jde ve Windows něco udělat. První úvaha, která mi prošla hlavou, se nesla asi tímto směrem: dvojtečka v názvu je z hlediska systému chyba a chyby lze řešit chkdiskem. Jenže kdo zná chkdsk z dob DOSových Windows (od prvních až po WinMe), ten ví, že tento nástroj dokáže občas souborový systém pěkně rozhasit. No co, máme rok 2014, někteří (jako já) dělají s osmičkami, tak snad už to nebude taková trága. I spustil jsem chkdsk s parametrem /v /f a sledoval, co se bude dít.
Nutno dodat, že to pomohlo, i když je to řešení takové typicky microsoftí. Systém souborů byl opraven, ale kdybych neměl standardně zobrazené skryté soubory a nevěděl, co s nimi, tak jsem o ty soubory v zásadě přišel. Jistě pro vás nebude problém uhodnout, co chkdsk udělal.
Jednoduše záznamy s neplatnými názvy smazal, čímž vlastně z původního umístění ty soubory odstranil. Neuvolnil ale místo těmito soubory obsazené, takže v rámci opravy souborového systému toto místo převedl do klasických souborů typu file0000000x.chk a umístil je do skryté složky found.000. Stačilo je jen ručně přejmenovat na *.png a měl jsem opět obrázky přístupné. Jen jsem nevěděl, jak se který původně jmenoval. V mém případě žádná tragédie, šlo o hrstku souborů, které stejně měly automaticky generované názvy podle času, ale jindy by to mohl být problém. Jistější opravdu bude pořešit to v systému, jemuž dvojtečky v názvu souborů nevadí.