Jak uniknout mezerám v cestách souborů na příkazovém řádku Windows

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 složek mohou také obsahovat mezery. Chcete-li zadat cestu k souboru s mezerou uvnitř, musíte ji „escapovat“.

Příkazový řádek 101: Proč musíte uniknout z prostorů

„Útěk“ postavě mění její význam. Například escapování mezery způsobí, že s ní bude shell zacházet jako se standardním znakem mezery spíše než jako se speciálním znakem, který odděluje argumenty příkazového řádku.

Řekněme například, že máte textový soubor, jehož obsah chcete zobrazit. Můžete to udělat pomocí příkazu type. Za předpokladu, že textový soubor je na C:TestFile.txt, následující příkaz v příkazovém řádku zobrazí jeho obsah:

type C:TestFile.txt

Skvělý. Co když máte stejný soubor v C:Test FolderTest File.txt? Pokud se pokusíte spustit níže uvedený příkaz, nebude to fungovat – ty mezery v cestě k souboru překážejí.

type C:Test FolderTest File.txt

Příkazový řádek si myslí, že se snažíte hledat soubor s názvem C:Test, a říká, že „nemůže najít zadanou cestu“.

Tři způsoby, jak uniknout z prostorů ve Windows

Cestám k souborům můžete v systému Windows uniknout třemi různými způsoby:

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 vážným přízvukem ( ` ) před každou mezeru. (Funguje to pouze v PowerShellu, ale funguje to vždy.)

Ukážeme vám, jak používat jednotlivé metody.

Uzavřete cestu do uvozovek ( ” )

Standardním způsobem, jak zajistit, aby systém Windows správně zacházel s cestou k souboru, je uzavřít ji do dvojitých uvozovek ( ” ). Například s naším ukázkovým příkazem výše bychom místo toho spustili následující:

type "C:Test FolderTest File.txt"

Pokud chcete, můžete ve skutečnosti uzavřít části cesty do uvozovek. Řekněme například, že jste v této složce měli 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ů stačí 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.

Někdy: Použijte znak Stříška k útěku z mezer ( ^ )

V příkazovém řádku vám znak stříšky ( ^ ) umožní uniknout mezerám – teoreticky. 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.)

Zde je problém: I když by to mělo fungovat, a někdy to funguje, nefunguje to pořád. Zacházení s touto postavou pomocí příkazového řádku je zvláštní.

Například s naším ukázkovým příkazem byste spustili následující a nefungovalo by to:

type C:Test^ FolderTest^ File.txt

Na druhou stranu, pokud se pokusíme otevřít náš soubor přímo zadáním jeho cesty do příkazového řádku, můžeme vidět, že znak stříšky správně uniká mezi mezerami:

C:Test^ FolderTest^ File.txt

Kdy to tedy funguje? No, na základě našeho výzkumu se zdá, že to s některými aplikacemi funguje a s jinými ne. Vaše ujeté kilometry se mohou lišit v závislosti na příkazu, který používáte. Zacházení s touto postavou pomocí příkazového řádku je zvláštní. Vyzkoušejte to s jakýmkoli příkazem, který používáte, pokud vás to zajímá – může nebo nemusí fungovat.

Pro konzistenci doporučujeme, abyste se drželi dvojitých uvozovek v příkazovém řádku – nebo přepněte na PowerShell a použijte metodu vážného zvýraznění níže.

PowerShell: Použijte znak Grave Accent ( ` )

PowerShell používá jako svůj únikový znak vážný přízvuk ( ` ). 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` FolderTest` File.txt

Každý znak s vážným přízvukem říká PowerShellu, aby unikl následujícímu znaku.

Všimněte si, že to funguje pouze v prostředí PowerShell. V příkazovém řádku budete muset použít znak stříšky.

Pokud znáte operační systémy podobné UNIXu, jako je Linux a macOS, možná jste zvyklí používat znak zpětného lomítka ( ) před mezerou, abyste ji opustili. Windows to používá pro normální cesty k souborům, takže to nefunguje – znaky stříšky ( ^ ) a zvýraznění ( ` ) jsou verzí zpětného lomítka pro Windows, v závislosti na tom, jaký shell příkazového řádku používáte.