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

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

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

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

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

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

type C:TempTestFile.txt

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

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

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

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

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

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

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

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

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

type "C:Temp FolderTest File.txt"

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

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

type "C:Temp Folder"TestFile.txt

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type C:Temp` FolderTest` File.txt

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

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

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

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

Spaces in the Commend Prompt (in a VBA Shell command code line)

I had a very similar problem which ended up being a space in the command prompt when automating via VBA to get the contents from the command window into a text file. This Thread was one of many I caught along the way that didn’t quite get me the solution.

So this may help others with a similar problem: Since the syntax with quotes is always difficult to get right , I think showing some specific examples is always useful.
The additional problem you get using the command prompt in VBA via the Shell thing, is that the code line often won’t error when something goes wrong: in fact a blink of the black commend window misleads into thinking something was done.

As example… say I have a Folder, with a text file in it like at

C:Alans Foldertest1.txt ( https://imgur.com/FELSdB6 )

The space there in the folder name gives the problem.

Something like this would work, assuming the Folder, AlansFolder, exists

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:AlansFoldertest1.txt"""
End Sub

This won’t work. (It won’t error).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:Alans Foldertest1.txt"""
End Sub

Including quote pairs around the path will make it work

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:Alans Foldertest1.txt"""""
End Sub

( By the way, if the text file does not exist, then it will be made).

With the benefit of hindsight, we can see that my solution does tie up approximately with some already given..

Converting that code line to a manual given command we would have

ipconfig /all > "C:Alans Foldertest1.txt"

That seems to work

This works also

ipconfig /all > C:AlansFoldertest1.txt

This doesn’t

ipconfig /all > C:Alans Foldertest1.txt

This final form also works and ties up with the solution from sacra ….” You have to add quotation marks around each path and also enclose the whole command in quotation marks “ …..

cmd.exe /c "ipconfig /all > "C:Alans Foldertest1.txt""

Spaces in the Commend Prompt (in a VBA Shell command code line)

I had a very similar problem which ended up being a space in the command prompt when automating via VBA to get the contents from the command window into a text file. This Thread was one of many I caught along the way that didn’t quite get me the solution.

So this may help others with a similar problem: Since the syntax with quotes is always difficult to get right , I think showing some specific examples is always useful.
The additional problem you get using the command prompt in VBA via the Shell thing, is that the code line often won’t error when something goes wrong: in fact a blink of the black commend window misleads into thinking something was done.

As example… say I have a Folder, with a text file in it like at

C:Alans Foldertest1.txt ( https://imgur.com/FELSdB6 )

The space there in the folder name gives the problem.

Something like this would work, assuming the Folder, AlansFolder, exists

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:AlansFoldertest1.txt"""
End Sub

This won’t work. (It won’t error).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:Alans Foldertest1.txt"""
End Sub

Including quote pairs around the path will make it work

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:Alans Foldertest1.txt"""""
End Sub

( By the way, if the text file does not exist, then it will be made).

With the benefit of hindsight, we can see that my solution does tie up approximately with some already given..

Converting that code line to a manual given command we would have

ipconfig /all > "C:Alans Foldertest1.txt"

That seems to work

This works also

ipconfig /all > C:AlansFoldertest1.txt

This doesn’t

ipconfig /all > C:Alans Foldertest1.txt

This final form also works and ties up with the solution from sacra ….” You have to add quotation marks around each path and also enclose the whole command in quotation marks “ …..

cmd.exe /c "ipconfig /all > "C:Alans Foldertest1.txt""

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

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

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

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

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

XCOPY C:UsersfatiwOneDriveDesktopMy test Folder D: /T /E

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

XCOPY "C:UsersfatiwOneDriveDesktopMy test Folder" D: /T /E

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

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

Что вы думаете об этой статье?

На чтение 11 мин. Просмотров 102 Опубликовано 03.02.2021

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

  cmd/CC:  Program Files (x86)  WinRar  Rar.exe a D:   Hello 2  File.rar D:  Hello 2  *. *  

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

  cmd/C "" C:  Program Files (x86)  WinRar  Rar  .exe "a" D:  Hello 2  File.rar "" D:  Hello 2  *. * ""  

Я только что понял, что для случая, когда путь включает использование символов пробела, например, когда мне нужно доступ к приложению xyz , расположение которого:

  C:  Program Files  ab cd  xyz.exe  

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

  C:  "Program Files"  "ab cd"  xyz.exe  

или

  "C:  Program Files  ab cd  xyz.exe"  

Поделиться

Улучшить этот ответ

12 июня ’18 в 15: 1 6

ghbarratt

10.6k44 золотых знака3737 серебряных знаков4141 бронзовых знаков

ответил 8 ноября 2013 в 13:16

  • Я пробовал это, но, похоже, в моем случае не работает: python “” C: Program Files (x86) Jenkins workspace Модульный тест Map Checker sqs-poller node_modules map-checker python unit_test.py “-d” C: Program Files (x86) Jenkins workspace Map Checker Unit Test MAP_CHECK_TMP #Test Case “-o” C: Program Files (x86) Jenkins workspace Модульный тест Map Checker MAP_CHECK_TMP #Test Case “-o2” C: Program Files (x86) Jenkins workspace Модульный тест Map Checker MAP_CHECK_TMP #Test Case testcase_results.csv “” -l “C: Program Files (x86) Jenkins workspace Модуль проверки карты MAP_CHECK_TMP” -restore “. может помочь? – hafizan 07 июл.2020, в 9:04

добавить комментарий |


Я только что понял, что для случая, когда путь включает использование символов пробела, например, когда мне нужно получить доступ к app xyz , расположение:

  C:  Program Files  ab cd  xyz.exe  

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

  C:  "Program Files"  "ab cd"  xyz.exe   

или

  "C:  Program Files  ab cd  xyz. exe " 

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

  dir/X ~ 1 c:   

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

  11.09.2014 12:54 AM 8,065 DEFAUL ~ 1.XML Default Desktop Policy.xml06/12/2014 03:49  PM  Программные файлы PROGRA ~ 1 10/12/2014 12:46 AM  Программные файлы PROGRA ~ 2 (x86)  

Теперь используйте короткий 8-символьный файл или имя папки в 5-м столбце, например PROGRA ~ 1 или DEFAUL ~ 1.XML, в ваших командах. Например:

  установите JAVA_HOME = c:  PROGRA ~ 1  Java   jdk1.6.0_45  

Поделиться

Улучшите этот ответ

отредактировано 27 июля ’18 в 15:50

jtth 73699 серебряных знаков2727 бронзовых знаков

  • Это простой способ. Никакой гадости с двойными кавычками. – Дэйв Андерсон, 25 февраля 2015, 20:34

  • Знаете ли вы, что short 8.3 является опцией NTFS и может быть отключен? Не надейтесь на это. – Зан Линкс 28 мая ’19 в 2:26

добавить комментарий |


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

  dir/X  ~ 1 c:   

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

  09.11.2014 00:54 8065 DEFAUL ~ 1.XML Default Desktop Policy.xml06/12/2014 15:49 PM  PROGRA ~  1 Program Files 10/12/2014 12:46 AM  PROGRA ~ 2 Program Files (x86)  

Теперь используйте короткое 8-символьное имя файла или папки в 5-м столбце , например PROGRA ~ 1 или DEFAUL ~ 1.XML в ваших командах. Например:

  установите JAVA_HOME = c:  PROGRA ~ 1  Java  jdk1.6.0_45  

Заключите пути, содержащие пробелы, в двойные кавычки.

  cmd/C "C:  Program Files (x86)  WinRar  Rar.exe" a "D:  Hello 2  File.rar" "D:  Hello 2  *. * " 

Поделиться

Улучшите этот ответ

ответил 16 июня ’11 в 17:34

  • Тогда проблема заключается в том, каков на самом деле синтаксис аргументов Rar.exe . Возможно, вы его неправильно используете. Попробуйте "D: Hello 2 " или " D: Hello 2 " вместо " D: Hello 2 *. * "? – JAB 16 июня ’11 в 18:09

  • cmd/C “C: Program Files (x86) WinRar Rar.exe” a D: Hello File.rar D: Hello *. * (Это не есть пробелы, и это работает), но как бороться с пробелами? – faressoft 16 июня 2011 г., 18:29

  • @JAB, если вам нужно исключить f Файл имеет имя с пробелами, например CEEMEA & LATAM.doc . Что это должно быть? "C: Program Files WinRAR rar" a -x * CEEMEA & LATAM.doc ".rar" – Ибн и Ашик, 29 августа 2017 г., 7:30

добавить комментарий |


Заключите пути, содержащие пробелы, в двойные кавычки.

  cmd/C "C  :  Program Files (x86)  WinRar  Rar.exe "a" D:  Hello 2  File.rar "" D:  Hello 2  *. * " 

Я предпочитаю заключать команду в () , который является допустимым batch , что упрощает чтение:

  cmd/C ("C:  Program Files (x86  )  WinRar  Rar.exe "a" D:  Hello 2  File.rar "" D:  Hello 2  *. * ")  

Поделиться

Улучшить этот ответ

ответил 27 фев. 2016 в 01:10


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

  cmd/C ("C:  Program Files (x86)  WinRar  Rar.exe" a "D:   Hello 2  File.rar "" D:  Hello 2  *. * ")  

Попробуйте указать сложные пути в двойных кавычках (и включить расширения файлов в конце для файлов.)

Для файлов:

  вызов "C:  example file". exe " 

Для каталога:

  cd" C:  Users  User Name  New Folder " 

CMD интерпретирует текст в двойных кавычках («xyz») как одну строку, а текст в одинарных кавычках (‘xyz’) как команду. Например:

FOR %% A in (‘dir/b/s * .txt’) do (‘command’)

FOR %% A in (‘dir/b/s * .txt ‘) do (echo “%% A”)

И одна хорошая вещь, cmd * не чувствителен к регистру, как bash. Итак, “New fiLE.txt” и “new file. TXT “похож на него.

* Примечание. Переменные %% A в приведенном выше регистре чувствительны к регистру (%% A не равно %% a).

Поделиться

Улучшить этот ответ

отредактировано 17 мая ’20 в 17 : 42

ответил 17 февраля ’16 в 21:01

  • Делайте подчеркивания в именах файлов считать? Как «имя_файла» против «имени файла» – SqueakyBeak 8 янв.2020 в 16:26

добавить комментарий |


Попробуйте указать сложные пути в двойных кавычках (и включить расширения файлов в конце для файлов.)

Для файлов:

  вызовите «C:  example file.exe»  

Для каталога:

  cd "C:  Users  User Name  New Folder"  

CMD интерпретирует текст в двойных кавычках (“xyz”) как одну строку и текст в одинарных кавычках (‘xyz’) в виде команды. Например:

FOR %% A in (‘dir/b/s * .txt’) do (‘ command ‘)

FOR %% A in (‘ dir/b/s * .txt ‘) do (echo “%% A”)

И хорошо, что cmd * не чувствителен к регистру, как bash. Так что «Новый файл .txt» и «новый файл.TXT» ему одинаковы.

* Примечание. Переменные %% A в приведенном выше регистре чувствительны к регистру (%% A не равно %% a).


  set "CMD = C:  Program Files (x86)  PDFtk  bin   pdftk "echo cmd/K" "% CMD%"% D% output trimmed.pdf "start cmd/K" "% CMD%"% D% output trimmed.. pdf " 

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

Поделиться

Улучшить этот ответ

ответил 29 сен 2015, 17:55


  set "CMD = C:  Program Files (x86)  PDFtk  bin  pdftk" echo cmd/K ""% CMD% "% D% вывод обрезан  .pdf "start cmd/K" "% CMD%"% D% output trimmed.pdf " 

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


Просто добавьте кавычки

Пример: “C: Users User Name”

Надеюсь, он решен!

Поделиться

Улучшить этот ответ

ответил 25 мая ’19 в 17:35

  • То же самое уже было сказано полдюжины раз. Какую дополнительную ценность это добавляет? – JJJ 25 мая ’19 в 6:02

добавить комментарий |


Просто добавьте кавычки

Пример: “C: Users Имя пользователя “

Надеюсь, он решен!


Попробуйте использовать кавычки.

  cmd/C "C:  Program Files (x86)  WinRar  Rar.exe  "a" D:  Hello 2  File.rar "" D:  Hello 2  *. * " 

Поделиться

Улучшить этот ответ

ответил 16 июня ’11 в 17:36

  • Это ненадежно. В определенных случаях (см. Microsoft. com/resources/documentation/windows/xp/all/proddocs/… – обработка кавычек) вместо этого выполняется файл «C: Program.bat». – Micha Wiedenmann 8 сен. ’14 в 06:51

добавить комментарий |


Вам следует попробовать использовать кавычки.

  cmd/C "C:  Program  Файлы (x86)  WinRar  Rar.exe "a" D:  Hello 2  File.rar "" D:  Hello 2  *. * " 

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

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

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

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

C: Alans Folder test1.txt (https://imgur .com/FELSdB6)

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

Что-то вроде этого могло бы работать, если папка AlansFolder существует

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell "cmd.exe/c" "ipconfig/all> C:  AlansFolder  test1.txt" "" End Sub  

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

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell "cmd.exe/c" "ipconfig/all> C:  Alans Folder  test1.txt" "  "End Sub  

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

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell" cmd.exe/ c "" ipconfig/all> "" C:  Alans Folder  test1.txt "" "" "End Sub  

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

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

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

  ipconfig/all> "C:  Alans Folder  test1.txt"  

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

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

  ipconfig/all> C:  AlansFolder  test1.txt  

Это не

  ipconfig/all> C:  Alans Folder  test1.txt  

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

  cmd.exe/ c "ipconfig/all>" C:  Alans Folder  test1.txt ""  

Поделиться

Улучшить этот ответ

ответил 15 декабря ’19 в 17:42


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

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

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

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

C: Alans Folder test1.txt (https://imgur .com/FELSdB6)

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

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

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell "cmd.exe/c" "ipconfig /all> C:  AlansFolder  test1.txt "" "End Sub  

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

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell "cmd.exe/c" "ipconfig/all> C:  Alans Folder  test1.txt" "  "End Sub  

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

  Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent () Shell" cmd.exe/ c "" ipconfig/all> "" C:  Alans Folder  test1.txt "" "" "End Sub  

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

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

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

  ipconfig/all> "C:  Alans Folder  test1.txt"  

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

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

  ipconfig/all> C:  AlansFolder  test1.txt  

Это не

  ipconfig/all> C:  Alans Folder  test1.txt  

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

  cmd.exe/c  "ipconfig/all>" C:  Alans Folder  test1.txt ""  

Эту проблему можно решить с помощью команды cd , эта команда понимает пробелы без двойных кавычек, и вы можете вызывать любую программу таким образом, например :

C: Windows system32> cd c: Program Files MongoDB Server 3.2 bin

c: Program Files MongoDB Server 3.2 bin> вызов командной строки mongonow mongo.exe

Поделиться

Улучшите этот ответ

ответил 17 марта ’16 в 13:24


Эту проблему можно решить с помощью команды cd , эта команда распознает пробелы без двойных кавычек, и вы можете вызовите любую программу таким образом, например:

C: Windows system32> cd c: Program Files MongoDB Server 3.2 bin

c: Program Files MongoDB Server 3.2 bin> вызов командной строки mongonow mongo.exe

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

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

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

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

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

type C:Новая папкаFile.txt

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

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

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

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

  1. Заключив путь (или его части) в двойные кавычки ().
  2. Добавляя символ вставки (^) перед каждым пробелом. (Это работает только в командной строке / CMD.)
  3. Добавляя знак ударения (`) перед каждым пробелом. (Это работает только в 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, что нужно избегать следующего символа.

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

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

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

Как я могу использовать пробелы в командной строке Windows?

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

Я только что выяснил, что для случая, когда путь включает использование символов пробела, например, когда мне нужно получить доступ к приложению, xyz расположение которого:

Чтобы запустить это из командной строки Windows, вам нужно использовать

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

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

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

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

Обведите пути, содержащие пробелы, двойными кавычками.

Попробуйте указать сложные имена путей в двойных кавычках (и в конце добавить расширения файлов).

CMD интерпретирует текст с двойными кавычками («xyz») как одну строку, а текст внутри одинарных кавычек («xyz») — как команду. Например:

FOR %% A in (‘dir / b / s * .txt’) do (‘команда’)

FOR %% A in (‘dir / b / s * .txt’) do (вывод «%% A»)

И еще одна хорошая вещь, cmd не * чувствителен к регистру, как Bash. Так что «New fiLE.txt» и «new file.TXT» похожи на это.

* Примечание: переменные %% A в приведенном выше регистре чувствительны к регистру (%% A не равно %% a).

Я предпочитаю заключить команду, в () которой действует, batch что делает его немного легче читать:

это работало для меня в командном файле

Просто добавьте кавычку

Пример: «C: Users Имя пользователя»

Надеюсь, это решено!

Вы должны попробовать использовать кавычки.

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

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

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

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

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

Нечто подобное будет работать, если предположить, что папка AlansFolder существует

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

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

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

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

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

Это похоже на работу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Просмотров сегодня: 3 773

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

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

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

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

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

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

Что-то вроде этого будет работать, если папка AlansFolder существует.

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:AlansFoldertest1.txt"""
End Sub

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

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:Alans Foldertest1.txt"""
End Sub

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

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:Alans Foldertest1.txt"""""
End Sub

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

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

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

ipconfig /all > "C:Alans Foldertest1.txt"

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

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

ipconfig /all > C:AlansFoldertest1.txt

Это не

ipconfig /all > C:Alans Foldertest1.txt

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

cmd.exe /c "ipconfig /all > "C:Alans Foldertest1.txt""

Понравилась статья? Поделить с друзьями:
  • Как поставить свой курсор на windows 10 по умолчанию
  • Как поставить приоритет хамачи windows 10
  • Как поставить разные обои на два рабочих стола windows 10
  • Как поставить приоритет сети на игру в windows 10
  • Как поставить разные обои на два монитора windows 10 без активации