Како избећи размаке у путањама датотека на командној линији оперативног система Виндовс

Kada radite sa komandnim okruženjima kao što su Windows komandna linija ili PowerShell, razmaci se koriste za odvajanje komandi i njihovih argumenata. Međutim, nazivi fajlova i foldera takođe mogu sadržati razmake. Da biste ispravno adresirali putanju fajla koja sadrži razmak, morate koristiti tehniku „izbegavanja“ ili „escape“.

Zašto je potrebno izbegavati razmake u komandnoj liniji?

„Izbegavanje“ nekog karaktera menja njegovo uobičajeno značenje. Na primer, kada izbegnete razmak, komandna linija ga više ne tretira kao separator argumenata, već kao običan znak razmaka unutar naziva fajla ili putanje.

Recimo da imate tekstualni fajl čiji sadržaj želite da pogledate. To se obično radi pomoću komande „type“. Pretpostavimo da se fajl nalazi na lokaciji C:TestFajl.txt. Sledeća komanda će ispravno prikazati sadržaj fajla:

type C:TestFajl.txt

Sve funkcioniše kako treba. Ali, šta ako je fajl na lokaciji C:Test FolderTest Fajl.txt? Ako pokušate da koristite istu komandu sa ovom putanjom, nećete dobiti očekivani rezultat jer razmaci unutar putanje stvaraju probleme.

type C:Test FolderTest Fajl.txt

Komandna linija će interpretirati ovu komandu kao da tražite fajl pod nazivom C:Test i prijaviće grešku „ne može pronaći navedenu putanju“.

Tri načina za izbegavanje razmaka u Windows-u

Postoje tri osnovna načina da izbegnete razmake u putanjama fajlova unutar Windows operativnog sistema:

  • Ubacivanje cele putanje ili njenog dela unutar dvostrukih navodnika („).
  • Dodavanje znaka umetka (^) ispred svakog razmaka. (Ova metoda funkcioniše samo u komandnoj liniji, a ne sa svakom komandom.)
  • Korišćenje znaka ` (backtick) ispred svakog razmaka. (Ovo je specifično za PowerShell i tamo funkcioniše pouzdano.)

Pogledaćemo kako svaki od ovih metoda funkcioniše.

Korišćenje navodnika („) za putanje fajlova

Najčešći i preporučeni način da osigurate da Windows ispravno tretira putanju fajla sa razmacima jeste da je stavite unutar dvostrukih navodnika („). Za naš prethodni primer, umesto neispravne komande, koristili bismo:

type "C:Test FolderTest Fajl.txt"

Po potrebi možete i samo delove putanje staviti pod navodnike. Na primer, ako se unutar datog foldera nalazi fajl pod imenom Fajl.txt, možete koristiti:

type C:"Test Folder"Fajl.txt

Međutim, uglavnom je dovoljno da se cela putanja stavi pod navodnike.

Ovo rešenje radi bez problema i u tradicionalnom okruženju komandne linije (CMD), kao i u Windows PowerShell-u.

Povremeno: znak umetka (^) za izbegavanje razmaka

U komandnoj liniji, znak umetka (^) bi teoretski trebalo da posluži za izbegavanje razmaka. Dodajete ga ispred svakog razmaka u nazivu datoteke (nalazi se na tasteru Shift+6).

Ipak, iako bi ovo trebalo da radi, i ponekad radi, nije konzistentno. Način na koji komandna linija obrađuje ovaj znak je čudan i nije uvek pouzdan.

Na primer, ako bismo pokušali da primenimo ovu metodu na našoj komandi, ne bi dala željeni rezultat:

type C:Test^ FolderTest^ Fajl.txt

Sa druge strane, ako samo otkucamo putanju fajla direktno u komandnu liniju, možemo videti da znak umetka ispravno izbegava razmake:

C:Test^ FolderTest^ Fajl.txt

Dakle, kada ovaj metod funkcioniše? Prema našim testovima, čini se da radi sa nekim aplikacijama, a sa drugim ne. Vaš rezultat može varirati u zavisnosti od konkretne komande koju koristite. Zbog ove nedoslednosti, preporučujemo da se držite dvostrukih navodnika u komandnoj liniji ili da koristite PowerShell i metodu sa znakom ` (backtick).

PowerShell: Znak ` (backtick) za izbegavanje razmaka

U PowerShell-u se znak ` (backtick) koristi kao znak za „escape“. Postavlja se ispred svakog razmaka u nazivu datoteke ili putanji (nalazi se iznad tastera Tab, ispod Esc).

type C:Test` FolderTest` Fajl.txt

Svaki znak backtick govori PowerShell-u da ignoriše specijalno značenje sledećeg karaktera.

Imajte na umu da ovo rešenje funkcioniše isključivo u PowerShell okruženju. Za komandnu liniju morate koristiti znak umetka (^) ili dvostruke navodnike.

Ako ste upoznati sa operativnim sistemima sličnim UNIX-u, kao što su Linux i macOS, verovatno ste navikli na korišćenje obrnute kose crte (\\) ispred razmaka za „escape“. Windows ovu kosu crtu koristi za regularne putanje, pa taj metod ne funkcioniše. Znak umetka (^) i znak ` (backtick) su Windows verzije obrnute kose crte, u zavisnosti od komandnog okruženja koje koristite.