Как использовать пробелы в командной строке?
Как использовать пробелы в командной строке 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 *. * ""
Я только что понял, что для случая, когда путь включает использование символов пробела, например, когда мне нужно получить доступ к 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.2022 12:54 AM 8,065 DEFAUL ~ 1.XML Default Desktop Policy.xml06/12/2022 03:49 PM Программные файлы PROGRA ~ 1 10/12/2022 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 бронзовых знаков
Если двойные кавычки не решают проблему, попробуйте, например,
dir/X ~ 1 c:
, чтобы получить список альтернативных имен файлов или каталогов. Пример вывода:
09.11.2022 00:54 8065 DEFAUL ~ 1.XML Default Desktop Policy.xml06/12/2022 15:49 PM PROGRA ~ 1 Program Files 10/12/2022 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:09cmd/C «C: Program Files (x86) WinRar Rar.exe» a D: Hello File.rar D: Hello *. * (Это не есть пробелы, и это работает), но как бороться с пробелами? — faressoft 16 июня 2022 г., 18:29
@JAB, если вам нужно исключить f Файл имеет имя с пробелами, например
CEEMEA & LATAM.doc
. Что это должно быть?"C: Program Files WinRAR rar" a -x * CEEMEA & LATAM.doc ".rar"
— Ибн и Ашик, 29 августа 2022 г., 7:30
добавить комментарий |
Заключите пути, содержащие пробелы, в двойные кавычки.
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. Так что «Новый файл .txt» и «новый файл.TXT» ему одинаковы.
* Примечание. Переменные %% A в приведенном выше регистре чувствительны к регистру (%% A не равно %% a).
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 Имя пользователя «
Надеюсь, он решен!
Вам следует попробовать использовать кавычки.
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