Як використовувати пробіли в командному рядку?


192

Як я можу використовувати пробіли в командному рядку Windows?

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

Відповіді:


261

Одиночні лапки в цьому випадку не будуть діяти. Ви повинні додавати лапки навколо кожного контуру, а також додавати всю команду до лапок:

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

4
Так, кожен шлях повинен бути укладений лапками. Крім того, всю команду потрібно було знову укласти ще однією парою лапок. Тепер це працює! Дякую!
Встань

@sakra також не працює для мене. "" C: \ Program Files \ WinRAR \ WinRAR.exe "а" C: \ Вері табанити yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar "-ri1 -mt2 -m5" C: \ Вері табанити yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak ""
MonsterMMORPG

3
@MonsterMMORPG префікс рядка зcmd /C
sakra

@sakra Я хочу виключити файл, що має ім’я з пробілами CEEMEA & LATAM.doc. Що я повинен зробити? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ібн е Ашік

працював для мене, але без зовнішніх лапок: "C: \ Program Files (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090,

78

Я просто зрозумів, що для випадку, коли шлях передбачає використання символів пробілу, наприклад, коли мені потрібно отримати доступ до програми, xyzяке місцезнаходження:

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

Щоб запустити це з підказки Windows cmd, вам потрібно скористатися

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

або

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

Я спробував це, але, здається, не працює в моєму випадку: python "" C: \ Програмні файли (x86) \ Jenkins \ робоча область \ Тест блоку перевірки карт \ sqs-poller \ node_modules \ map-checker \ python \ unit_test.py "-d" C: \ програмні файли (x86) \ Jenkins \ робоча область \ Тест блоку перевірки карт \ MAP_CHECK_TMP \ #Тест "-o" C: \ програмні файли (x86) \ Jenkins \ робоча область \ Тест блоку перевірки карт \ MAP_CHECK_TMP \ # Тестовий випадок "-o2" C: \ програмні файли (x86) \ Jenkins \ робоча область \ тест блоку перевірки карт \ MAP_CHECK_TMP \ #Test Case \ testcase_results.csv "" -l "C: \ програмні файли (x86) \ Jenkins \ робоча область \ Тест блоку перевірки карт \ MAP_CHECK_TMP "-ресторан". може допомогти?
hafizan

22

Якщо подвійні лапки не вирішують питання, спробуйте, наприклад

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 

Це простий спосіб. Ніяка подвійна цитата мукі-мака не бере участь.
Дейв Андерсон

Чи знаєте ви, що короткий 8.3 - це варіант NTFS і його можна відключити? Не покладайтеся на це.
Зан Лінкс

10

Додайте доріжки, що містять пробіли, з подвійними лапками.

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

cmd / C "C: \ Program Files (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (У ньому немає пробілів, і це робота), але як мати справу з пробілами?
faressoft

@JAB, якщо вам потрібно виключити файл, що має ім'я, як пробіли CEEMEA & LATAM.doc. Що це повинно бути? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ібн е Ашік

10

Спробуйте надати складні назви шляхів у подвійних лапках (і в кінці файлів додайте розширення файлів.)

Для файлів:

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).


Чи враховуються підкреслення у назвах файлів? Як "file_name" vs "name file"
SqueakyBeak

7

Я вважаю за краще вкласти команду, в ()якій є дійсною, batchщо полегшує читання:

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

3
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"

це працювало для мене у пакетному файлі


2

Просто додайте лапки

Приклад: "C: \ Users \ Ім'я користувача"

Сподіваюся, що це вирішено!


7
Те саме було сказано вже півдесятка разів. Яку додаткову цінність додає це?
JJJ


0

Пробіли у рядку 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""

-3

Вона може вирішити цю проблему компакт-диском , ця команда розуміє пробіли без подвійних лапок, і ви можете викликати будь-яку програму таким чином, наприклад:

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

c: \ програмні файли \ MongoDB \ сервер \ 3.2 \ bin> mongo тепер командний рядок виклику mongo.exe

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.