Командная строка windows пробелы

Длинные имена файлов или пути с пробелами требуют кавычках

В этой статье приводится решение проблемы, которая возникает при указании длинных имен файлов или путей с пробелами.

Исходная версия продукта: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 102739

Симптомы

Следующее сообщение об ошибке указывается при указании длинных имен файлов или путей с пробелами в Windows NT:

Системе не удается найти указанный файл

Причина

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

Решение

Используйте кавычка при указании длинных имен файлов или путей с пробелами. Например, при вводе copy c:\my file name d:\my new file name команды в командной подсказке будет выводиться следующее сообщение об ошибке:

Системе не удается найти указанный файл.

Необходимо использовать кавычка.

Дополнительные сведения

Пробелы разрешены в длинных именах файлов или путях длиной до 255 символов с помощью NTFS. Однако все операции в командной подсказке, включающие длинные имена с пробелами, должны рассматриваться по-разному. Как правило, соглашение MS-DOS используется для указания параметра пробела после слова. В операциях командной Windows NT используется то же соглашение, что и при использовании длинных имен файлов.

Как избежать в командной строке Windows проблем с пробелом в пути к файлам

Публикация: 16 Октябрь 2020 Обновлено: 16 Октябрь 2020

В средах командной строки, таких как командная строка Windows и PowerShell, пробелы используются для разделения команд и аргументов, но имена файлов и папок также могут содержать пробелы. Чтобы указать путь к файлу имеющего символ пробела в названии или пути к файлу, вам нужно «экранировать» его.

Почему нужно избегать символ пробела?

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

Например, предположим, что у вас есть текстовый файл, содержимое которого вы хотите просмотреть. Вы можете сделать это с помощью команды type. Предполагая, что текстовый файл находится по адресу C:\Папка\File.txt, следующая команда в командной строке покажет содержимое файла:

Отлично! А что, если у вас есть такой же файл по адресу C:\Новая папка\File.txt? Если вы попробуете выполнить приведенную ниже команду, это не сработает — пробелы в пути к файлу мешают правильно обработать команду.

Командная строка считает, что вы пытаетесь найти файл с именем Новая, в результате вы получаете: «Ошибка во время обработки: C:\Новая.
Системе не удается найти указанный путь.».
Тоже самое будет? если пробел есть в имени файла New File.txt

Три способа избежать ошибок из-за символа пробел в Windows 10

Есть три разных способа избежать проблем используя пробел в пути к файлу Windows:

  1. Заключив путь (или его части) в двойные кавычки ( ” ).
  2. Добавляя символ вставки ( ^ ) перед каждым пробелом. (Это работает только в командной строке / CMD.)
  3. Добавляя знак ударения ( ` ) перед каждым пробелом. (Это работает только в PowerShell.)
Читайте также:  Отключаем ненужные функции windows 10

Мы покажем вам, как использовать каждый из перечисленных способов.

Заключите путь к файлу в кавычки («)

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

Вы можете заключить части пути в кавычки, если хотите. Например, предположим, что у вас есть файл с именем File.txt в этой папке. Вы можете запустить следующее:

Однако в этом нет необходимости — в большинстве случаев вы можете просто заключить весь путь в кавычки.

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

Иногда: используйте символ каретки для правильной обработки пробелов (^)

В командной строке символ каретки ^ теоретически позволяет избежать пробелов. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ в числовом ряду на клавиатуре. Чтобы ввести символ каретки, нажмите Shift + 6 .)

Вот проблема: хотя это должно работать, а иногда и работает, это работает не всегда. Командная строка обрабатывает этот символ странно.

Например, запустите следующую команду, но она не сработает:

Ошибка экранирования пробела в командной строке

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

Итак, когда это работает? Что ж, исходя из нашего исследования, похоже, что с некоторыми приложениями он работает, а с другими — нет. Это может варьироваться в зависимости от команды, которую вы используете. Командная строка обрабатывает этот символ странно. Если вам интересно, попробуйте с любой командой, которую вы используете, — она ​​может работать, а может и не работать.

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

PowerShell: используйте символ ударения (`)

PowerShell использует знак ударения ` в качестве символа-пробела. Просто добавьте его перед каждым пробелом в имени файла. (Вы найдете этот символ над клавишей Tab и под клавишей Esc на клавиатуре.)

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

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

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

Как ввести путь к файлу или папке с пробелами в CMD Windows 10

Как ввести путь к файлу или папке с пробелами в командной строке в Windows 10

Мы поделились множеством советов и приемов, которые включают запуск команд в командной строке в Windows 10. Многие общие действия, такие как проверка связи с сервером или проверка состояния сетевого коммутатора, выполняются с помощью командной строки.

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

Читайте также:  Mac os time capsule

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

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

Ввод путей с пробелами

Хитрость заключается в двойных кавычках. Сделайте эмпирическое правило заключать в двойные кавычки все пути к файлам, которые вы вводите в командной строке.

Следующая команда не будет выполняться. В пути есть пробел, и в этом месте команда прерывается, и командная строка считает, что вы ввели новую команду или параметр.

XCOPY C: тестовая папка UsersfatiwOneDriveDesktopMy D: / T / E

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

XCOPY ‘C: UsersfatiwOneDriveDesktopMy папка теста’ D: / T / E

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

Это верно для всех приложений командной строки, которые вы используете в Windows 10. В PowerShell — любая команда, которая требует, чтобы путь к файлу или папке вводился в двойных кавычках.

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

Как использовать пробелы в командной строке? — windows |

Как использовать пробелы в командной строке? — windows

Пробелы в приглашении приветствовать (в строке командного кода оболочки VBA)

У меня была очень похожая проблема, которая в итоге оказалась пробелом в командной строке при автоматизации через VBA для получения содержимого из командного окна в текстовый файл. Эта тема была одной из многих, которые я поймал по пути, и которые не совсем помогли мне найти решение.

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

В качестве примера… скажем, у меня есть папка с текстовым файлом, например,

C: Папка Alans test1.txt ( https://imgur.com/FELSdB6 )

Пробел в имени папки дает проблему.

Примерно так будет работать, если папка Alans Folder существует.

Это не сработает. (Это не ошибка).

Включение пар цитат вокруг пути заставит его работать

(Кстати, если текстового файла не существует, то он будет создан).

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

Преобразовав эту строку кода в заданную вручную команду, мы получили бы

Кажется, это работает

Это также работает

Эта окончательная форма также работает и связана с решением сакра… «. Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки «…..

Как использовать пробелы в командной строке? — windows |

Если двойные кавычки не решают проблему, попробуйте, например,

получить список альтернативных имен файлов или каталогов. Пример вывода:

Теперь используйте короткие 8-символьные имена файлов или папок в 5-м столбце, например, PROGRA

1.XML, в своих командах. Например:

Читайте также:  Linux подсчет повторяющихся строк

Пробел в командах ввода cmd

Итак, у меня есть сценарий, который захватывает список пользователей, а затем устанавливает пароль для всех из них, достаточно простой? Однако, когда я получаю список пользователей, использующих выход wmic (который преобразуется в скорректированный формат с использованием цикла), каждый пользователь получает результат, аналогичный

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

в этом случае администратор не имеет 6 мест

Мой вопрос: как мне удалить пробелы после имен без ручного перехода в текстовый документ?

Пробелы в путях

Запутался в путях
У меня стоит XAMPP в Linux Ubuntu. Путь начиная с файловой системы: opt/lampp/htdocs. В htdocs.

Вопрос об относительных путях.
Подскажите, как прописываются относительные пути, возможно ли это?

Задача о непересекающихся путях
Не могу написать курсовую по этой теме. Как выявить проблему и написать задачи? И может кто нибудь.

Makefile на путях с пробелами (кроссплатформенность)
Приветствую всех! . точно не знаю куда обратиться, т.к. вроде бы вопрос по make, но и относится.

Описание к параметрам exiftool-а весьма большое. Сложно разобраться сразу.

Считаю, что Вы неправильно указали ключи.
Если же батник работает нормально, то и в VB должно отрабатывать.
Вот посмотрите такой примерчик. У меня лог. пишет замечательно (и как видите пробелы в именах):

Нет, так не будет работать. Проверил — неверный синтаксис.
Вторая кавычка для BASH всегда обычно воспринимается как завершение обрамления. Т.е. в Вашем случае команда CMD 2-й параметр распарсит как «»c:\test

Лично у меня вариант из поста № 2 ошибок не выдает (и не должен),
но не уверен что ТС прописала ключи в нужном виде, да и что должно получится особенно не вчитывался.

Если указаны ключи /C или /K, то остальная часть командной строки после
такого ключа обрабатывается как командная строка, а обработка символов
кавычек («) ведется по следующим правилам:

1. Если выполняются все перечисленные ниже условия, то символы
кавычек в командной строке сохраняются:

— ключ /S отсутствует
— есть ровно два символа кавычек
— между ними нет других специальных символов, как то: &<>()@^|
— между ними имеются один или несколько пробелов
— строка, заключенная в кавычки, является именем исполнимого
файла.

2. В противном случае, проверяется первый символ, и если он является
символом кавычек, то он удаляется, также удаляется последний
символ кавычек в командной строке, а весь текст после этого
последнего символа кавычек сохраняется.

Читал. Но пункт 2 только сейчас до меня дошел.
Я наверно где-то ошибся. Проверил еще раз — нормально запускается (Win7).

Тогда для Visual Basic-a строка будет выглядеть так:
CmdLine = «cmd /c «»»»c:\test test\exiftool.exe»» -c «»%.6f «» -ee -p «»$filename, $gpslatitude, $gpslongitude»» «»c:\test tes \»» >> «»c:\test test\log.log»»»»»
Тоже проверил — работает.

Ребята, спсибо всем за участие! Обрамлять кавычками все выражение я тоже пробовала, потому что хелп тоже читала . Но теперь я разобралась в чем моя была ошибка. Надо было отложить на некоторое время проблему, тогда бы все сразу поняла, как сейчас. В какой то момент я сама вписала ошибку в виде добавления бэкслэша в параметре выбора целевого каталога — . «»c:\test test \ «» >> «»c:\test test\log.log», а дальше продолжала работать с этой строкой , упорно списывая сообщение Error opening directory c:/test test» на очередную проблему с кавычками (из-за отсутствия в сообщении открывающей кавычки). В батнике же путь к каталогу немножко упростила до test 1 и бэкслэш не ставила и все заработало.. Ну тормоз

Добавлено через 2 минуты
Dragokas, спасибо за код, однозначно найдет применение

Оцените статью