Відповіді:
Одиночні лапки в цьому випадку не будуть діяти. Ви повинні додавати лапки навколо кожного контуру, а також додавати всю команду до лапок:
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 cmd, вам потрібно скористатися
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-символьний файл чи папку, наприклад, 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\*.*"
Пробіли у рядку Commend (у командному рядку командної оболонки оболонки VBA)
У мене була дуже схожа проблема, яка виявилася пробілом у командному рядку при автоматизації через VBA для отримання вмісту з вікна команди в текстовий файл. Ця нитка була однією з багатьох, яку я спіймав на цьому шляху, і це не зовсім прийняло мені рішення.
Тож це може допомогти іншим із подібною проблемою: Оскільки синтаксис із цитатами завжди важко отримати правильно, я думаю, що показувати деякі конкретні приклади завжди корисно. Додаткова проблема, яку ви отримуєте за допомогою командного рядка в VBA через річ Shell, полягає в тому, що рядок коду часто не помиляється, коли щось піде не так: насправді миготіння чорного вікна передачі помилок вводить у думку, що щось зроблено.
Як приклад ... скажіть, у мене папка, в якій текстовий файл, як у
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""
Вона може вирішити цю проблему компакт-диском , ця команда розуміє пробіли без подвійних лапок, і ви можете викликати будь-яку програму таким чином, наприклад:
C: \ Windows \ system32> cd c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin
c: \ програмні файли \ MongoDB \ сервер \ 3.2 \ bin> mongo тепер командний рядок виклику mongo.exe