Як уникнути пробілів у шляхах до файлів у командному рядку Windows

Інтерфейси командного рядка, такі як командний рядок Windows та PowerShell, використовують прогалини для розмежування команд та їхніх аргументів. Однак, назви файлів та папок також можуть містити прогалини. Щоб коректно вказати шлях до файлу, назва якого містить прогалини, потрібно застосувати екранування.

Основи командного рядка: Навіщо потрібне екранування прогалин?

Екранування символу змінює його функціональне значення. Наприклад, екранування прогалини змушує командну оболонку сприймати її як звичайний розділовий символ, а не як спеціальний символ, що розділяє аргументи командного рядка.

Розглянемо приклад. Уявімо, що у вас є текстовий файл, вміст якого ви хочете переглянути. Це можна зробити за допомогою команди type. Якщо файл розташований за шляхом C:TestFile.txt, то наступна команда виведе його вміст:

type C:TestFile.txt

Все працює відмінно. Але що робити, якщо файл знаходиться в C:Test FolderTest File.txt? Спроба запуску тієї ж команди не матиме успіху, оскільки прогалини в шляху заважають коректній обробці:

type C:Test FolderTest File.txt

Командний рядок розцінює це як спробу знайти файл з назвою C:Test і повідомить про помилку “не вдається знайти вказаний шлях”.

Три способи обійти прогалини у Windows

У Windows існує три основні способи екранування прогалин у шляхах до файлів:

  • Обгортання всього шляху або його частини в подвійні лапки (“).
  • Додавання символу каретки (^) перед кожною прогалиною. (Цей метод працює лише в командному рядку/CMD і не завжди з усіма командами).
  • Додавання символу зворотного апострофа (`) перед кожною прогалиною. (Цей метод працює лише в PowerShell, але є надійним).

Далі ми розглянемо кожен з цих методів детальніше.

Використання подвійних лапок (“)

Найпоширенішим способом забезпечити коректну обробку шляху до файлу в Windows є його обгортання в подвійні лапки. Для нашого прикладу команда буде виглядати так:

type "C:Test FolderTest File.txt"

Також можна обгортати в лапки лише окремі частини шляху. Наприклад, якщо в цій папці є файл з назвою File.txt, можна виконати таку команду:

type C:"Test Folder"File.txt

Втім, у більшості випадків достатньо обгорнути лапками весь шлях. Цей метод працює як у традиційному командному рядку (CMD), так і в PowerShell.

Символ каретки (^) як засіб екранування

У командному рядку символ каретки (^) може використовуватися для екранування прогалин, принаймні теоретично. Для цього потрібно розмістити його перед кожною прогалиною в імені файлу (символ каретки вводиться за допомогою комбінації клавіш Shift+6). Однак, на практиці цей метод не завжди працює надійно через особливості обробки цього символу в командному рядку.

Наприклад, наступна команда, хоча й повинна працювати, насправді не буде виконана:

type C:Test^ FolderTest^ File.txt

Проте, якщо ми спробуємо відкрити файл безпосередньо, ввівши його шлях у командному рядку, символ каретки працює правильно:

C:Test^ FolderTest^ File.txt

Отже, коли цей метод працює? Судячи з наших досліджень, він може працювати з одними програмами, а з іншими ні. Результат залежить від конкретної команди. Тому, для надійності, ми рекомендуємо використовувати подвійні лапки в командному рядку або переходити на PowerShell і застосовувати метод зі зворотним апострофом.

PowerShell: Використання зворотного апострофа (`)

У PowerShell роль екрануючого символу виконує зворотний апостроф (`). Його потрібно розміщувати перед кожною прогалиною в імені файлу (зворотний апостроф розташований над клавішею Tab та під клавішею Esc):

type C:Test` FolderTest` File.txt

Кожен зворотний апостроф вказує PowerShell екранувати наступний символ.

Слід зазначити, що цей метод працює виключно в середовищі PowerShell. В командному рядку потрібно використовувати символ каретки.

Якщо ви знайомі з UNIX-подібними операційними системами, такими як Linux та macOS, то, можливо, звикли використовувати зворотну косу риску (\) перед прогалиною для її екранування. В Windows цей символ використовується для звичайних шляхів до файлів, тому він не працює. Символи каретки (^) та зворотного апострофа (`) є аналогами зворотної косої риски для Windows, залежно від того, який командний інтерфейс ви використовуєте.