Bagaimana cara menggunakan spasi di Command Prompt?

192

Bagaimana saya bisa menggunakan spasi di Windows Command Line?

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

Jawaban:

261

Tanda kutip tunggal tidak akan berlaku dalam kasus itu. Anda harus menambahkan tanda kutip di sekitar setiap jalur dan juga melampirkan seluruh perintah dalam tanda kutip:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
sakra
sumber
4
Ya, setiap jalur harus ditutup dengan tanda kutip. Selain itu, seluruh perintah harus dilampirkan lagi oleh sepasang tanda kutip lainnya. Sekarang berhasil! Terima kasih!
Bangkit
@akra tidak bekerja untuk saya juga. "" C: \ Program Files \ WinRAR \ WinRAR.exe "a "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -m5 "C: \ veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak""
MonsterMMORPG
3
@MonsterMMORPG awalan baris dengancmd /C
sakra
@ cakra Saya ingin mengecualikan file yang memiliki nama dengan spasi CEEMEA & LATAM.doc. Apa yang harus saya lakukan? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
bekerja untuk saya tetapi tanpa tanda kutip luar: "C: \ Program Files (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090
78

Saya baru tahu bahwa untuk kasus di mana jalur melibatkan penggunaan karakter spasi putih, misalnya, ketika saya perlu mengakses aplikasi xyzyang lokasinya:

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

Untuk menjalankan ini dari windows cmd prompt, Anda harus menggunakan

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

atau

"C:\Program Files\ab cd\xyz.exe"
Mithil D
sumber
Saya mencoba ini tetapi sepertinya tidak berhasil dalam kasus saya: python "" C: \ Program Files (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ 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 Uji Unit \ MAP_CHECK_TMP \ #Kasus Uji "-o2" C: \ Program Files (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP \ #Kasus Uji \ testcase_results.csv "" -l "C: \ Program Files (x86) \ Jenkins \ workspace \ Map Checker Unit Test \ MAP_CHECK_TMP "-restore". dapat membantu?
hafizan
22

Jika tanda kutip ganda tidak menyelesaikan masalah maka coba misalnya

dir /X ~1 c:\

untuk mendapatkan daftar file alternatif atau nama direktori. Contoh output:

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)

Sekarang gunakan nama file 8 folder atau nama pendek di kolom 5, misalnya PROGRA ~ 1 atau DEFAUL ~ 1.XML, dalam perintah Anda. Misalnya:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 
rob2universe
sumber
Ini cara yang mudah. Tidak ada penawaran double-double mucky-muck yang terlibat.
Dave Anderson
Apakah Anda sadar bahwa short 8.3 adalah opsi NTFS dan dapat dinonaktifkan? Jangan mengandalkan itu.
Zan Lynx
10

Lampirkan jalur yang berisi spasi dengan tanda kutip ganda.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
TUSUKAN
sumber
Maka masalahnya terletak pada apa sintaks argumen Rar.exesebenarnya. Anda mungkin salah menggunakannya. Mungkin mencoba "D:\Hello 2\"atau "D:\Hello 2"bukan "D:\Hello 2\*.*"?
JAB
cmd / C "C: \ Program Files (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (Tidak memiliki spasi dan berfungsi) tetapi bagaimana caranya berurusan dengan ruang?
faressoft
@ JAB jika Anda perlu mengecualikan file yang memiliki nama dengan spasi seperti CEEMEA & LATAM.doc. Apa yang seharusnya? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
10

Cobalah untuk memberikan nama path yang kompleks dalam tanda kutip ganda (dan sertakan ekstensi file di akhir file).

Untuk file:

call "C:\example file.exe"

Untuk Direktori:

cd "C:\Users\User Name\New Folder"

CMD mengartikan teks dengan tanda kutip ganda ("xyz") sebagai satu string dan teks dalam tanda kutip tunggal ('xyz') sebagai perintah. Sebagai contoh:

UNTUK %% A dalam ('dir / b / s * .txt') do ('command')

UNTUK %% A dalam ('dir / b / s * .txt') lakukan (echo "%% A")

Dan satu hal yang baik, cmd tidak * case sensitif seperti bash. Jadi "New fiLE.txt" dan "file baru.TXT" sama saja.

* Catatan: Variabel %% A dalam kasus di atas adalah case-sensitive (%% A tidak sama dengan %% a).

Vaisak Mohan
sumber
Apakah garis bawah dalam nama file dihitung? Seperti 'file_name' vs 'file name'
SqueakyBeak
7

Saya lebih suka melampirkan perintah ()yang valid batchyang membuatnya sedikit lebih mudah dibaca:

cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")
Dan
sumber
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"

ini bekerja untuk saya dalam file batch

James Brown
sumber
2

Cukup tambahkan Tanda Kutip

Contoh: "C: \ Users \ Nama Pengguna"

Semoga bisa dipecahkan!

Patrick Prakash
sumber
7
Hal yang sama telah dikatakan setengah lusin kali. Nilai tambahan apa yang ditambahkan oleh ini?
JJJ
1

Anda harus mencoba menggunakan kutipan.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Jaanus
sumber
2
Ini tidak bisa diandalkan. Dalam kasus-kasus tertentu (lihat microsoft.com/resources/documentation/windows/xp/all/proddocs/… - Memproses tanda kutip) file "C: \ Program.bat" dijalankan sebagai gantinya.
Micha Wiedenmann
0

Spaces dalam Commend Prompt (dalam baris kode perintah VBA Shell)

Saya punya masalah yang sangat mirip yang akhirnya menjadi ruang di command prompt ketika mengotomatisasi melalui VBA untuk mendapatkan konten dari jendela perintah ke file teks. Thread ini adalah salah satu dari banyak yang saya tangkap di sepanjang jalan yang tidak cukup memberi saya solusinya.

Jadi ini dapat membantu orang lain dengan masalah yang sama: Karena sintaks dengan kutipan selalu sulit untuk diperbaiki, saya pikir menunjukkan beberapa contoh spesifik selalu berguna. Masalah tambahan yang Anda dapatkan menggunakan command prompt di VBA melalui Shell, adalah bahwa baris kode sering tidak akan kesalahan ketika terjadi kesalahan: pada kenyataannya, sekejap jendela perintah hitam menyesatkan untuk berpikir bahwa sesuatu telah dilakukan.

Sebagai contoh ... katakan saya memiliki Folder, dengan file teks di dalamnya seperti di

C: \ Alans Folder \ test1.txt ( https://imgur.com/FELSdB6 )

Ruang di sana dalam nama folder memberi masalah.

Sesuatu seperti ini akan berfungsi, dengan asumsi Folder, AlansFolder, ada

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub

Ini tidak akan berhasil. (Tidak akan salah).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub

Termasuk pasangan kutipan di sekitar jalan akan membuatnya bekerja

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub

(Omong-omong, jika file teks tidak ada, maka akan dibuat).

Dengan manfaat melihat ke belakang, kita dapat melihat bahwa solusi saya mengikat sekitar dengan beberapa sudah diberikan ..

Mengonversi baris kode itu ke perintah yang diberikan secara manual akan kita miliki

ipconfig /all > "C:\Alans Folder\test1.txt"

Itu sepertinya berhasil

Ini juga berfungsi

ipconfig /all > C:\AlansFolder\test1.txt

Ini tidak

ipconfig /all > C:\Alans Folder\test1.txt

Bentuk akhir ini juga berfungsi dan terkait dengan solusi dari sakra .... " Anda harus menambahkan tanda kutip di sekitar setiap jalur dan juga melampirkan seluruh perintah dalam tanda kutip “… ..

cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Alan Elston
sumber
-3

Ini dapat menyelesaikan masalah ini dengan perintah cd , perintah ini memahami spasi tanpa tanda kutip ganda dan Anda dapat memanggil program apa saja dengan cara ini misalnya:

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

c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin> mongo sekarang command prompt memanggil mongo.exe

Karen
sumber