Povolte režim rozlišování malých a velkých písmen pro složky ve Windows 10
Jak již možná víte, systém souborů Windows, NTFS, zachází s názvy souborů a složek jako s nerozlišujícími malými a velkými písmeny. Například pro operační systém a aplikace jsou MyFile.txt a myfile.txt stejný soubor. V Linuxu je to však jinak. Pro tento OS se jedná o dva různé soubory. Tento rozdíl v chování může uživatelům WSL způsobit problémy. K jejich vyřešení obsahuje Windows 10 možnost povolit režim rozlišování malých a velkých písmen pro složky.
Pokud jste použili Subsystém Windows pro Linux, pravděpodobně víte, že vám umožňuje zacházet se souborovými systémy Windows (připojenými pod /mnt/c, /mnt/d atd.) jako s rozlišováním velkých a malých písmen. To mimo jiné znamená, že můžete vytvářet soubory, jejichž názvy se liší pouze velikostí písmen (např. foo.txt a FOO.TXT).
Použití těchto souborů ve Windows však ve skutečnosti nebylo možné. Vzhledem k tomu, že aplikace Windows zacházejí se systémem souborů jako bez rozlišení velkých a malých písmen, nemohou rozlišovat mezi soubory, jejichž názvy se liší pouze velikostí písmen. Zatímco Průzkumník souborů zobrazí oba soubory, otevře se pouze jeden bez ohledu na to, na který jste klepli.
Počínaje sestavením Windows insider build 17093 existuje nový způsob, jak ve Windows zpracovávat soubory rozlišující malá a velká písmena: rozlišování malých a velkých písmen v jednotlivých adresářích. Tato schopnost byla přidána, aby uživateli poskytla lepší interoperabilitu při používání souborů citlivých na velká a malá písmena. Můžete jej také použít s běžnými aplikacemi Windows. Počínaje Windows 10 Build 17110 je toto chování výchozí.
Více informací
Rozlišování malých a velkých písmen ve Windows
Rodina operačních systémů Windows NT (včetně Windows 10) měla vždy možnost provádět operace se souborovým systémem rozlišující malá a velká písmena. Aplikace mohou projít FILE_FLAG_POSIX_SEMANTICS
vlajka k CreateFile
API označující, že chtějí, aby se s cestou zacházelo jako s rozlišováním velkých a malých písmen. Z důvodů kompatibility však existuje globální klíč registru, který toto chování přepíše; když je tento klíč nastaven, všechny operace se soubory nerozlišují malá a velká písmena, i když je FILE_FLAG_POSIX_SEMANTICS
je zadán příznak. Od Windows XP je to výchozí nastavení.
Subsystém Windows pro Linux používá jiný mechanismus, který sám obchází tento klíč registru, což nám umožňuje provádět operace se souborovým systémem rozlišující malá a velká písmena. To umožňuje linuxovým aplikacím běžícím ve WSL používat názvy souborů, které se liší pouze velikostí písmen, stejně jako mohou na skutečném Linuxu, dokonce i s touto sadou globálních klíčů registru.
Bohužel vám to ponechá soubory, ke kterým nemají aplikace Windows přístup. I když byste mohli změnit klíč globálního registru, stále by to fungovalo pouze pro aplikace, které používají FILE_FLAG_POSIX_SEMANTICS
a tím by se změnilo chování všech souborů na všech jednotkách, což nemusí být záměrné a může to poškodit některé aplikace.
Rozlišování malých a velkých písmen v jednotlivých adresářích
K vyřešení tohoto problému přidal Microsoft nový příznak rozlišující malá a velká písmena, který lze použít na adresáře. U adresářů, které mají tento příznak nastaven, všechny operace se soubory v daném adresáři rozlišují malá a velká písmena, bez ohledu na to, zda FILE_FLAG_POSIX_SEMANTICS
byla specifikována. To znamená, že pokud máte dva soubory, které se liší pouze velikostí písmen v adresáři označeném jako malá a velká, budou k nim mít přístup všechny aplikace.
Povolit režim rozlišování malých a velkých písmen pro složky
Chcete-li tuto funkci povolit nebo zakázat, měli byste použít vestavěnou aplikaci fsutil.exe.
Chcete-li povolit režim rozlišování malých a velkých písmen pro složky, Udělej následující.
- Otevřeno zvýšený příkazový řádek.
- Zadejte následující příkaz:
fsutil.exe soubor setCaseSensitiveInfo povolit "úplnou cestu k vaší složce".
Nahraďte část cesty správnou cestou odpovídající vašemu počítači.
Například,fsutil.exe soubor setCaseSensitiveInfo "C:\data\Winaero\Linux" povolit
- Jsi hotov.
Nyní můžete vytvořit dva soubory se stejným názvem a pouze s rozdílem malých a velkých písmen. Windows 10 je v této konkrétní složce zpracuje správně.
Chcete-li zobrazit stav funkce pro složku, spusťte příkaz
soubor fsutil.exe queryCaseSensitiveInfo "úplná cesta k vaší složce"
Například,
soubor fsutil.exe queryCaseSensitiveInfo "C:\data\Winaero\Linux"
Uvidíte něco takového:
Konečně, pro zakázání režimu rozlišování malých a velkých písmen pro složky, spusťte další příkaz v příkazovém řádku otevřeném jako správce:
soubor fsutil.exe setCaseSensitiveInfo "C:\data\Winaero\Linux" zakázat
Použijte správnou cestu ke složce a máte hotovo.
Poznámka: Zakázání atributu CaseSensitiveInfo pro neprázdné složky není podporováno. Před deaktivací složky musíte odstranit všechny soubory.
A je to.