Ответы:
В этом случае одинарные кавычки не подходят. Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки:
cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
cmd /C
CEEMEA & LATAM.doc
. Что я должен делать? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Я только что выяснил, что для случая, когда путь включает использование символов пробела, например, когда мне нужно получить доступ к приложению, 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.xml
06/12/2014 03:49 PM <DIR> PROGRA~1 Program Files
10/12/2014 12:46 AM <DIR> PROGRA~2 Program Files (x86)
Теперь используйте короткие 8-символьные имена файлов или папок в 5-м столбце, например, PROGRA ~ 1 или DEFAUL ~ 1.XML, в своих командах. Например:
set 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\*.*"
?
CEEMEA & LATAM.doc
. Что это должно быть? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Попробуйте указать сложные имена путей в двойных кавычках (и в конце добавить расширения файлов).
Для файлов:
call "C:\example file.exe"
Для справочника:
cd "C:\Users\User Name\New Folder"
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).
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"
это работало для меня в командном файле
Просто добавьте кавычку
Пример: «C: \ Users \ Имя пользователя»
Надеюсь, это решено!
Вы должны попробовать использовать кавычки.
cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Пробелы в командной строке (в командной строке оболочки VBA)
У меня была очень похожая проблема, которая в итоге приводила к пробелу в командной строке при автоматизации через VBA для получения содержимого из командного окна в текстовый файл. Эта тема была одной из многих, которые я нашел на этом пути, но это не совсем помогло мне найти решение.
Так что это может помочь другим с подобной проблемой: так как синтаксис с кавычками всегда трудно понять правильно, я думаю, что показ некоторых конкретных примеров всегда полезен. Дополнительная проблема, возникающая при использовании командной строки в VBA через оболочку, заключается в том, что строка кода часто не выдает ошибку, если что-то идет не так: на самом деле миг черного окна commend вводит в заблуждение, заставляя думать, что что-то было сделано.
Как пример ... скажем, у меня есть папка с текстовым файлом в нем, как в
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
Эта окончательная форма также работает и связана с решением от сакры… » Вы должны добавить кавычки вокруг каждого пути, а также заключить всю команду в кавычки «… ..
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> mongo теперь вызывает командную строку mongo.exe