В средах командной строки, таких как командная строка Windows и PowerShell, пробелы используются для разделения команд и аргументов, но имена файлов и папок также могут содержать пробелы. Чтобы указать путь к файлу имеющего символ пробела в названии или пути к файлу, вам нужно «экранировать» его.
Почему нужно избегать символ пробела?
«Пробел» в названии файла или папки, может препятствовать правильной обработке команды, экранирование пробела заставит оболочку рассматривать его как стандартный пробел, а не как специальный символ, разделяющий аргументы командной строки.
Например, предположим, что у вас есть текстовый файл, содержимое которого вы хотите просмотреть. Вы можете сделать это с помощью команды type. Предполагая, что текстовый файл находится по адресу C:\Папка\File.txt, следующая команда в командной строке покажет содержимое файла:
type C:\Папка\File.txt
Отлично! А что, если у вас есть такой же файл по адресу C:\Новая папка\File.txt? Если вы попробуете выполнить приведенную ниже команду, это не сработает - пробелы в пути к файлу мешают правильно обработать команду.
type C:\Новая папка\File.txt
Командная строка считает, что вы пытаетесь найти файл с именем Новая, в результате вы получаете: «Ошибка во время обработки: C:\Новая.
Системе не удается найти указанный путь.». Тоже самое будет? если пробел есть в имени файла New File.txt
Три способа избежать ошибок из-за символа пробел в Windows 10
Есть три разных способа избежать проблем используя пробел в пути к файлу Windows:
- Заключив путь (или его части) в двойные кавычки (”).
- Добавляя символ вставки (^) перед каждым пробелом. (Это работает только в командной строке / CMD.)
- Добавляя знак ударения (`) перед каждым пробелом. (Это работает только в PowerShell.)
Мы покажем вам, как использовать каждый из перечисленных способов.
Заключите путь к файлу в кавычки (")
Стандартный способ убедиться, что Windows правильно обрабатывает путь к файлу, - заключить его в двойные кавычки ". Например, в нашем примере команды выше мы просто выполняем следующее:
type "C:\Новая папка\Test File.txt"
Вы можете заключить части пути в кавычки, если хотите. Например, предположим, что у вас есть файл с именем File.txt в этой папке. Вы можете запустить следующее:
type C:\"Новая папка"\File.txt
Однако в этом нет необходимости - в большинстве случаев вы можете просто заключить весь путь в кавычки.
Это решение работает как в традиционной среде командной строки (CMD), так и в Windows PowerShell.
Иногда: используйте символ каретки для правильной обработки пробелов (^)
В командной строке символ каретки ^ теоретически позволяет избежать пробелов. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ в числовом ряду на клавиатуре. Чтобы ввести символ каретки, нажмите Shift + 6.)
Вот проблема: хотя это должно работать, а иногда и работает, это работает не всегда. Командная строка обрабатывает этот символ странно.
Например, запустите следующую команду, но она не сработает:
type C:\Новая^ папка\Test^ File.txt
Ошибка экранирования пробела в командной строке
С другой стороны, если мы попытаемся открыть наш файл напрямую, введя его путь в командную строку, мы увидим, что символ каретки правильно экранирует пробелы:
C:\Новая^ папка\Test^ File.txt
Итак, когда это работает? Что ж, исходя из нашего исследования, похоже, что с некоторыми приложениями он работает, а с другими - нет. Это может варьироваться в зависимости от команды, которую вы используете. Командная строка обрабатывает этот символ странно. Если вам интересно, попробуйте с любой командой, которую вы используете, - она может работать, а может и не работать.
Мы рекомендуем использовать двойные кавычки в командной строке или переключиться на PowerShell и использовать способ, рассмотренный ниже.
PowerShell: используйте символ ударения (`)
PowerShell использует знак ударения ` в качестве символа-пробела. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ над клавишей Tab и под клавишей Esc на клавиатуре.)
type C:\Новая` папка\Test` File.txt
Каждый знак ударения сообщает PowerShell, что нужно избегать следующего символа.
Обратите внимание, что это работает только в среде PowerShell. В командной строке вам нужно будет использовать символ каретки.
Если вы знакомы с UNIX-подобными операционными системами, такими как Linux и macOS, вы, возможно, привыкли использовать символ обратной косой черты (\) перед пробелом, чтобы правильно обработать команду. Windows использует его для пути к файлам, поэтому он не работает - символы каретки (^) и ударения (`) это своего рода обратная косая черта Windows в зависимости от того, какую оболочку вы используете.