Wiersze polecenia, takie jak Windows Command Prompt oraz PowerShell, posługują się spacjami do oddzielania poleceń od argumentów. Jednak nazwy plików i katalogów mogą również zawierać spacje. Aby poprawnie określić ścieżkę do pliku, która zawiera spacje, konieczne jest ich „uciekanie”.
Wiersz poleceń 101: zasady ucieczki ze spacji
„Ucieczka” znaku zmienia jego interpretację. Na przykład, zmieniając znaczenie spacji, sprawisz, że powłoka uzna ją za standardowy znak, a nie za symbol separujący argumenty.
Przykładowo, jeśli chcesz wyświetlić zawartość pliku tekstowego, możesz użyć polecenia type. Załóżmy, że plik znajduje się w C:\TestFile.txt, wiersz polecenia do jego wyświetlenia wyglądałby następująco:
type C:\TestFile.txt
Świetnie. Co jednak, gdy ten sam plik jest umieszczony w C:\Test Folder\Test File.txt? Próba uruchomienia poniższego polecenia nie powiedzie się – spacje w nazwie pliku będą przeszkadzać.
type C:\Test Folder\Test File.txt
Wiersz polecenia zinterpretuje to jako próbę odnalezienia pliku o nazwie C:\Test i zgłosi błąd „nie można znaleźć określonej ścieżki”.
Trzy metody uciekania ze spacji w systemie Windows
Istnieją trzy różne sposoby, aby zmienić interpretację ścieżek plików w systemie Windows:
- Umieszczając całą ścieżkę lub jej fragmenty w podwójnych cudzysłowach (”).
- Dodając znak daszka (^) przed każdą spacją. (To działa tylko w wierszu polecenia i nie jest niezawodne w przypadku każdego polecenia).
- Używając znaku akcentu (`) przed każdą spacją. (Ta metoda działa w PowerShell i jest zawsze skuteczna).
Poniżej przedstawimy, jak stosować każdą z tych metod.
Umieszczanie ścieżki w cudzysłowach (”)
Najbardziej standardowym sposobem, aby Windows prawidłowo zinterpretował ścieżkę pliku, jest umieszczenie jej w podwójnych cudzysłowach (”). Na przykład, dla naszego przykładowego polecenia moglibyśmy uruchomić:
type "C:\Test Folder\Test File.txt"
Możesz również umieścić w cudzysłowach tylko fragmenty ścieżki. Na przykład, jeśli masz plik o nazwie File.txt w tym folderze, możesz użyć:
type C:\"Test Folder"\File.txt
W większości przypadków wystarczy jednak umieścić całą ścieżkę w cudzysłowach.
Ta metoda działa zarówno w tradycyjnym wierszu poleceń (CMD), jak i w Windows PowerShell.
Czasami: znak Caret do uciekania ze spacji (^)
W wierszu polecenia znak daszka (^) teoretycznie pozwala na uciekanie ze spacji. Dodaj go przed każdą spacją w nazwie pliku. (Znak ten znajduje się w rzędzie cyfr na klawiaturze – aby go wpisać, naciśnij Shift + 6).
Jednakże, chociaż powinno to działać, w praktyce zdarza się, że nie jest niezawodne. Obsługa tego znaku w wierszu polecenia bywa nieprzewidywalna.
Na przykład, używając naszego przykładowego polecenia, jeśli wpiszesz:
type C:\Test^ Folder\Test^ File.txt
to nie zadziała.
C:\Test^ Folder\Test^ File.txt
Kiedy to działa? Z naszych obserwacji wynika, że metoda ta sprawdza się z niektórymi aplikacjami, a z innymi nie. W zależności od polecenia, które używasz, może ona zadziałać lub nie. Dlatego dla pewności zalecamy korzystanie z podwójnych cudzysłowów w wierszu polecenia lub przejście do PowerShell i użycie metody z akcentem.
PowerShell: użycie znaku akcentu (`)
W PowerShell znak akcentu (`) pełni rolę znaku ucieczki. Dodaj go przed każdą spacją w nazwie pliku. (Znak ten znajduje się nad klawiszem Tab i pod klawiszem Esc na klawiaturze).
type C:\Test` Folder\Test` File.txt
Każdy znak akcentu instruuje PowerShell, aby zignorował następujący znak.
Warto zauważyć, że ta metoda działa wyłącznie w PowerShell. W wierszu polecenia wciąż musisz korzystać z znaku daszka.
Jeśli znasz systemy operacyjne podobne do UNIX, takie jak Linux czy macOS, możesz być przyzwyczajony do używania znaku ukośnika odwrotnego (\) przed spacją, aby ją „uciec”. W systemie Windows jednak nie działa to – znaki daszka (^) i akcentu (`) są odpowiednikami ukośnika odwrotnego w kontekście Windows, w zależności od używanej powłoki.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.