Как использовать пробелы в командной строке 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"
-
1Я пробовал это, но, похоже, в моем случае не работает: 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
-
Это простой способ. Никакой гадости с двойными кавычками. – Дэйв Андерсон, 25 февраля 2015, 20:34
-
1Знаете ли вы, что 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 *. * "
-
Тогда проблема заключается в том, каков на самом деле синтаксис аргументов
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 *. * ")
Я предпочитаю заключать команду в ()
, что является допустимым пакетом
, который немного упрощает чтение:
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).

-
Делайте подчеркивания в именах файлов считать? Как «имя_файла» против «имени файла» – 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 "
это сработало для меня в пакетном файле

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”
Надеюсь, он решен!

-
7То же самое уже было сказано полдюжины раз. Какую дополнительную ценность это добавляет? – 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 *. * "
-
2Это ненадежно. В определенных случаях (см. 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 ""

Пробелы в приглашении с благодарностью (в строке командного кода оболочки 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
Эту проблему можно решить с помощью команды cd , эта команда распознает пробелы без двойных кавычек, и вы можете вызовите любую программу таким образом, например:
C: Windows system32> cd c: Program Files MongoDB Server 3.2 bin
c: Program Files MongoDB Server 3.2 bin> вызов командной строки mongonow mongo.exe