В средах командной строки, таких как командная строка Windows и PowerShell , для разделения команд и аргументов используются пробелы, но имена файлов и каталогов также могут содержать пробелы. Чтобы указать путь к файлу, внутри которого есть пробел, вам нужно «экранировать» его.
Зачем избегать пространств?
«Побег» или побег персонажа меняет его значение. Например, экранирование пробела приведет к тому, что оболочка будет воспринимать его как пробел, а не как специальный символ, разделяющий аргументы командной строки.
Предположим, у вас есть текстовый файл и вы хотите просмотреть его содержимое. Вы можете сделать это с помощью команды type. Предполагая, что текстовый файл находится по адресу C:\Test\File.txt , следующая команда в командной строке отобразит его содержимое:
type C:\Test\File.txt
А что, если у вас есть тот же файл в C:\Test Folder\Test File.txt ? Если вы попытаетесь запустить приведенную ниже команду, она не сработает — мешают пробелы в пути к файлу.
type C:\Test Folder\Test File.txt
Командная строка думает, что вы пытаетесь найти файл с именем C:\Test , и сообщает, что « невозможно найти указанный путь » (невозможно найти указанный путь).

Командная строка не может найти указанный путь
3 способа избежать пробелов в Windows
Существует 3 различных способа экранирования путей к файлам в Windows:
- Заключив путь (или его части) в двойные кавычки ("").
- Добавляя символ каретки (^) перед каждым пробелом. (Это работает только в командной строке/CMD и, похоже, работает не со всеми командами).
- Добавляя знак акцента (`) перед каждым пробелом. (Это работает только в PowerShell, но работает всегда).
В этой статье вы узнаете, как использовать каждый метод.
Заключите путь в кавычки
Стандартный способ убедиться, что Windows правильно обрабатывает путь к файлу, — заключить его в двойные кавычки («»). Например, в приведенном выше примере команды команда будет выполняться следующим образом:
type "C:\Test Folder\Test File.txt"
Если хотите, вы можете заключить части пути в кавычки. Например, предположим, что в этой папке у вас есть файл с именем File.txt . Вы можете запустить следующее:
type C:\"Test Folder"\File.txt
Однако в этом нет необходимости. В большинстве случаев вы можете просто заключить весь путь в кавычки.
Это решение работает как в традиционной среде командной строки (CMD), так и в Windows PowerShell.

Заключите путь в кавычки
Используйте символ каретки (^) перед пробелом.
В командной строке символ каретки (^) теоретически позволит вам избежать пробелов. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ в числовом ряду на клавиатуре. Чтобы ввести символ каретки, нажмите Shift + 6 ).
Проблема в том, что хотя это и эффективно, это не всегда работает. Обработка этого персонажа в командной строке странная.
Например, если вы выполните следующую команду в примере команды, она не будет работать:
type C:\Test^ Folder\Test^ File.txt

Вышеуказанная команда не будет работать
С другой стороны, если вы попытаетесь открыть файл напрямую, введя его путь в командной строке, вы можете обнаружить, что символ каретки правильно выходит за пределы пробела:
C:\Test^ Folder\Test^ File.txt

Символ каретки правильно экранирует пробелы
Так когда же это сработает? Судя по исследованиям, он работает только с некоторыми приложениями. Все может измениться в зависимости от используемой вами команды. Обработка этого персонажа в командной строке странная. Попробуйте любую команду, которую вы используете, она может сработать, а может и не сработать.
Для единообразия в статье рекомендуется использовать двойные кавычки в командной строке или переключиться на PowerShell и использовать приведенный ниже метод.
Используйте символы акцента (`)
PowerShell использует символ акцента (`) в качестве escape-символа. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ над клавишей Tab и под клавишей Esc на клавиатуре).
type C:\Test` Folder\Test` File.txt
Для каждого символа с акцентом требуется, чтобы PowerShell экранировал следующий за ним символ.
Обратите внимание, что это работает только в средах PowerShell. Вам придется использовать символ каретки в командной строке.

Используйте символы акцента (`)
Если вы знакомы с UNIX-подобными операционными системами, такими как Linux и macOS, вы, возможно, знакомы с использованием символа обратной косой черты (\) перед пробелом для его экранирования. Windows использует этот символ для обычных путей к файлам, поэтому он не работает. Символы каретки (^) и акцента (`) — это версия обратной косой черты Windows, в зависимости от используемой оболочки командной строки.
Узнать больше: