Prostředí příkazového řádku, jako je Windows Command Prompt a PowerShell , používají k oddělení příkazů a argumentů mezery – ale názvy souborů a adresářů mohou také obsahovat mezery. Chcete-li zadat cestu k souboru, která má v sobě mezeru, musíte ji „escapovat“.
Proč uniknout z prostorů?
„Útěk“ neboli útěk z postavy mění její význam. Například escapování mezery způsobí, že ji shell bude považovat za znak mezery namísto speciálního znaku oddělujícího argumenty příkazového řádku.
Předpokládejme, že máte textový soubor a chcete zobrazit obsah. Můžete to udělat pomocí příkazu type. Za předpokladu, že se textový soubor nachází v C:\Test\File.txt , následující příkaz v příkazovém řádku zobrazí jeho obsah:
type C:\Test\File.txt
Co když máte stejný soubor v C:\Test Folder\Test File.txt ? Pokud se pokusíte spustit níže uvedený příkaz, nebude to fungovat - mezery v cestě k souboru překážejí.
type C:\Test Folder\Test File.txt
Příkazový řádek si myslí, že se pokoušíte vyhledat soubor s názvem C:\Test , a říká, že „ nelze najít zadanou cestu “ (nelze najít zadanou cestu).

Příkazový řádek nemůže najít zadanou cestu
3 způsoby, jak uniknout mezerám ve Windows
Existují 3 různé způsoby, jak uniknout z cest k souborům v systému Windows:
- Uzavřením cesty (nebo jejích částí) do dvojitých uvozovek ("").
- Přidáním znaku stříšky (^) před každou mezeru. (Toto funguje pouze v příkazovém řádku/CMD a nezdá se, že by to fungovalo s každým příkazem).
- Přidáním znaku s diakritikou (`) před každou mezeru. (Toto funguje pouze v PowerShellu, ale funguje to vždy).
Tento článek vás provede použitím jednotlivých metod.
Uzavřete cestu do uvozovek
Standardním způsobem, jak zajistit, aby systém Windows správně zpracoval cestu k souboru, je uzavřít ji do dvojitých uvozovek ("") znaků. Například s výše uvedeným ukázkovým příkazem by byl příkaz spuštěn následovně:
type "C:\Test Folder\Test File.txt"
Pokud chcete, můžete ve skutečnosti dát části cesty do uvozovek. Řekněme například, že v této složce máte soubor s názvem File.txt . Můžete spustit následující:
type C:\"Test Folder"\File.txt
To však není nutné. Ve většině případů můžete jednoduše použít uvozovky kolem celé cesty.
Toto řešení funguje jak v tradičním prostředí příkazového řádku (CMD), tak v prostředí Windows PowerShell.

Uzavřete cestu do uvozovek
Před mezerou použijte znak stříšky (^).
V příkazovém řádku vám znak stříšky (^) teoreticky umožní uniknout mezerám. Stačí jej přidat před každou mezeru v názvu souboru. (Tento znak najdete v číselné řadě na klávesnici. Chcete-li zadat znak stříšky, stiskněte Shift + 6 ).
Problém je v tom, že ačkoli je to účinné, ne vždy to funguje. Zacházení s touto postavou pomocí příkazového řádku je zvláštní.
Pokud například u ukázkového příkazu spustíte následující, příkaz nebude fungovat:
type C:\Test^ Folder\Test^ File.txt

Výše uvedený příkaz nebude fungovat
Na druhou stranu, pokud se pokusíte otevřít soubor přímo zadáním jeho cesty do příkazového řádku, možná zjistíte, že znak stříšky správně unikne z mezery:
C:\Test^ Folder\Test^ File.txt

Znak stříšky správně vynechá mezery
Kdy to tedy funguje? Na základě výzkumu se zdá, že funguje pouze s některými aplikacemi. Věci se mohou změnit v závislosti na příkazu, který používáte. Zacházení s touto postavou pomocí příkazového řádku je zvláštní. Zkuste s jakýmkoli příkazem, který používáte, může nebo nemusí fungovat.
Pro konzistenci článek doporučuje používat dvojité uvozovky v příkazovém řádku nebo přejít na PowerShell a použít metodu níže.
Použít znaky s diakritikou (`)
PowerShell používá jako únikový znak diakritiku (`). Stačí jej přidat před každou mezeru v názvu souboru. (Tento znak najdete nad klávesou Tab a pod klávesou Esc na klávesnici).
type C:\Test` Folder\Test` File.txt
Každý znak s diakritikou vyžaduje, aby PowerShell unikal znaku, který následuje.
Všimněte si, že to funguje pouze v prostředích PowerShell. V příkazovém řádku budete muset použít znak stříšky.

Použít znaky s diakritikou (`)
Pokud znáte operační systémy podobné UNIXu, jako je Linux a macOS, můžete být obeznámeni s používáním znaku zpětného lomítka (\) před mezerou, abyste jej opustili. Systém Windows používá tento znak pro běžné cesty k souborům, takže to nefunguje. Stříška (^) a diakritická znaménka (`) jsou verzí zpětného lomítka pro Windows v závislosti na prostředí příkazového řádku, které používáte.
Vidět víc: