Prostredia príkazového riadka, ako napríklad príkazový riadok systému Windows a PowerShell , používajú medzery na oddelenie príkazov a argumentov – ale názvy súborov a adresárov môžu obsahovať aj medzery. Ak chcete zadať cestu k súboru, ktorá má vo vnútri medzeru, musíte ju „uniknúť“.
Prečo uniknúť z priestorov?
„Útek“ alebo útek postavy mení jej význam. Napríklad escapovanie medzery spôsobí, že shell ju bude považovať za medzeru namiesto špeciálneho znaku oddeľujúceho argumenty príkazového riadku.
Predpokladajme, že máte textový súbor a chcete zobraziť obsah. Môžete to urobiť pomocou príkazu type. Za predpokladu, že sa textový súbor nachádza v C:\Test\File.txt , nasledujúci príkaz v príkazovom riadku zobrazí jeho obsah:
type C:\Test\File.txt
Čo ak máte rovnaký súbor v C:\Test Folder\Test File.txt ? Ak sa pokúsite spustiť príkaz uvedený nižšie, nebude to fungovať - medzery v ceste k súboru vám prekážajú.
type C:\Test Folder\Test File.txt
Príkazový riadok si myslí, že sa pokúšate vyhľadať súbor s názvom C:\Test a hovorí, že „ nemôže nájsť zadanú cestu “ (nemôže nájsť zadanú cestu).

Príkazový riadok nemôže nájsť zadanú cestu
3 spôsoby, ako uniknúť medzerám v systéme Windows
Existujú 3 rôzne spôsoby, ako môžete uniknúť z ciest k súborom v systéme Windows:
- Uzavretím cesty (alebo jej častí) do dvojitých úvodzoviek ("").
- Pridaním znaku vsuvky (^) pred každú medzeru. (Toto funguje iba v príkazovom riadku/CMD a zdá sa, že to nefunguje s každým príkazom).
- Pridaním znaku s diakritikou (`) pred každú medzeru. (Toto funguje iba v PowerShell, ale funguje to vždy).
Tento článok vám ukáže, ako používať jednotlivé metódy.
Uzavrite cestu do úvodzoviek
Štandardným spôsobom, ako zabezpečiť, aby systém Windows správne zaobchádzal s cestou k súboru, je uzavrieť ju do dvojitých úvodzoviek ("") znakov. Napríklad s vyššie uvedeným vzorovým príkazom by sa príkaz spustil takto:
type "C:\Test Folder\Test File.txt"
Ak chcete, môžete skutočne dať časti cesty do úvodzoviek. Povedzme napríklad, že v tomto priečinku máte súbor s názvom File.txt . Môžete spustiť nasledovné:
type C:\"Test Folder"\File.txt
To však nie je potrebné. Vo väčšine prípadov môžete jednoducho použiť úvodzovky okolo celej cesty.
Toto riešenie funguje v tradičnom prostredí príkazového riadka (CMD) aj v prostredí Windows PowerShell.

Uzavrite cestu do úvodzoviek
Pred medzerou použite vsuvku (^).
V príkazovom riadku vám znak vsuvky (^) teoreticky umožní uniknúť medzerám. Stačí ho pridať pred každú medzeru v názve súboru. (Tento znak nájdete v číselnom riadku na klávesnici. Ak chcete zadať znak vsuvky, stlačte Shift + 6 ).
Problém je v tom, že hoci je to účinné, nie vždy to funguje. Ovládanie príkazového riadka s touto postavou je zvláštne.
Napríklad v prípade vzorového príkazu, ak spustíte nasledovné, príkaz nebude fungovať:
type C:\Test^ Folder\Test^ File.txt

Vyššie uvedený príkaz nebude fungovať
Na druhej strane, ak sa pokúsite otvoriť súbor priamo zadaním jeho cesty do príkazového riadka, možno zistíte, že znak vsuvky správne unikne z priestoru:
C:\Test^ Folder\Test^ File.txt

Strihový znak správne vynecháva medzery
Kedy to teda funguje? Na základe výskumu sa zdá, že funguje len s niektorými aplikáciami. Veci sa môžu zmeniť v závislosti od príkazu, ktorý používate. Ovládanie príkazového riadka s touto postavou je zvláštne. Skúste s akýmkoľvek príkazom, ktorý používate, môže alebo nemusí fungovať.
Kvôli konzistencii článok odporúča použiť dvojité úvodzovky v príkazovom riadku alebo prejsť na PowerShell a použiť metódu nižšie.
Použiť znaky s diakritikou (`)
PowerShell používa akcent (`) ako únikový znak. Stačí ho pridať pred každú medzeru v názve súboru. (Tento znak nájdete nad klávesom Tab a pod klávesom Esc na klávesnici).
type C:\Test` Folder\Test` File.txt
Každý znak s diakritikou vyžaduje PowerShell, aby unikol znaku, ktorý nasleduje.
Upozorňujeme, že to funguje iba v prostrediach PowerShell. V príkazovom riadku budete musieť použiť znak striešky.

Použiť znaky s diakritikou (`)
Ak poznáte operačné systémy podobné UNIX, ako sú Linux a macOS, možno poznáte používanie znaku spätnej lomky (\) pred medzerou, aby ste ho opustili. Systém Windows používa tento znak pre bežné cesty k súborom, takže nefunguje. Strihačka (^) a diakritické znamienka (`) sú verziou spätnej lomky pre Windows v závislosti od shellu príkazového riadka, ktorý používate.
Pozrieť viac: