Оболочки командной строки, такие как командная строка  и , используют пробелы для разделения команд и аргументов, но имена файлов и папок также могут содержать пробелы поэтому просто так их использовать пробелы нельзя. Давайте разберемся…

Почему стоит избегать использование пробелов при работе в коммандной строке

Пробел в пути папки или файла командная строка определяет как разделение команд и аргументов. Для того, чтобы использовать пробел как собственно пробел, прийдется весь пусть экранировать, а это требует отдельного внимания в зависимости от конкретной оболочки командной строки и программы, выполняемой в этой оболочке.

Кратко опишем проблему: например, у нас есть текстовый файл, который необходимо прочесть. Предположим этот файл расположен по адресу C:\Temp\TestFile.txt Для его прочтения необходимо выполнить команду

type C:\Temp\TestFile.txt

Отлично, а теперь представим, что прочесть теперь необходимо файл по адресу C:\Temp Folder\Test File.txt

Выполнив команду ниже вы со 100% вероятностью получите не вывод содержимого файла на экран, а ошибку — пробелы в пути файла не дадут команде выполниться корректно.

type C:\Temp Folder\Test File.txt
Пробелы в пути файлов командной строки Windows, как их использовать?

Три способа использовать знак пробела в пути Windows

Существует три способа использовать пробел в пути файлов:

  1. Заключить путь c пробелами в двойные кавычки ( » )
  2. Добавлять символ каре ( ^ ) перед каждый пробелом (ет только в командной строке и только в определенных командах и программах)
  3. Добавлять знак ударения ( ` ) перед каждым пробелом (работает только в PowerShell, но работает всегда)

Рассмотрим каждый способ ближе.

Заключить путь в двойные кавычки

Стандартный метод точного указания пути к файлу в Windows — заключение его в двойные кавычки. Например, команда выдававшая ошибку в примере выше с кавычками в пути будет выглядеть так:

type "C:\Temp Folder\Test File.txt"

Так же, вы можете заключить лишь часть пути в двойные кавычки, например только ту часть, которая содержит в себе пробелы.

Интересно:  Как принудительно удалить папку или файл в Windows 11

Представим, что в папке Temp Folder у нас находится файл TestFile.txt, в таком случае команда будет выглядеть так:

type "C:\Temp Folder"\TestFile.txt

Но, на практике такие кавычки использовать не лучшая мысль — это запутывает код и делает его менее гибким. Гораздо проще просто закрыть весь путь двойными кавычками.

Это решение работает как в традиционной среде командной строки (CMD), так и в Windows PowerShell.

Пробелы в пути файлов командной строки Windows, как их использовать?

Добавить символ каре с пробелами в командной строке

Теоретически символ каре в командной строке позволит вам пользоваться пробелами в пути файлов. Нужно просто добавлять символ перед каждым пробелом (Shift + 6 в английской раскладке).

На практике этот спецсимвол работает не каждый раз и очень часто программа завершается ошибкой.

Например, следующая команда должна выполниться без проблем, но она почему-то выдает ошибку

type C:\Temp^ Folder\Test^ File.txt
Пробелы в пути файлов командной строки Windows, как их использовать?

С другой стороны, если мы попробуем окрыть наш файл напрямую, введя его путь в командной строке и проставив символы каре, то увидим, что пробелы в пути файла обработались корректно:

C:\Temp^ Folder\Test^ File.txt
Пробелы в пути файлов командной строки Windows, как их использовать?

Таким образом, по своему опыту и поискав информацию в интернете мы приходим к выводу, что этот способ работает только с избранными программами и не дает полной уверенности в результате.

Вывод — пользуйтесь двойными кавычками в командной строке, или символом ударения в PowerShell, о котором ниже.

PowerShell символ ударения с пробелами в командной строке

PowerShell использует символ ударения в качестве экранирующего символа. Его нужно добавлять с каждым пробелом в имени файла (Этот символ спрятан на букве Ё на клавиатуре).

type C:\Temp` Folder\Test` File.txt

Каждый символ ударения указывает PowerShell как обрабатывать каждый последующий пробел.

Обратите внимание, что этот способ работает только в среде PowerShell, в командной строке придется использовать символ каретки, или, как уже писали выше, экранировать весь путь двойными кавычками.

Пробелы в пути файлов командной строки Windows, как их использовать?

Для пользователей UNIX-подобных систем напомним, что аналогичная проблема с пробелами в командной строке в и решается использованием символа обратной косой черты ( \ ).

Интересно:  Обновление Windows создает проблему с Active Directory