Làm cách nào để sử dụng khoảng trắng trong Dấu nhắc Lệnh?


188

Làm cách nào tôi có thể sử dụng khoảng trắng trong Dòng lệnh Windows?

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

Câu trả lời:


257

Dấu ngoặc đơn sẽ không làm trong trường hợp đó. Bạn phải thêm dấu ngoặc kép xung quanh mỗi đường dẫn và cũng bao gồm toàn bộ lệnh trong dấu ngoặc kép:

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

4
Có, mọi đường dẫn phải được kèm theo dấu ngoặc kép. Ngoài ra, toàn bộ lệnh phải được bao quanh bởi một cặp dấu ngoặc kép khác. Bây giờ nó hoạt động! Cảm ơn!
Phát sinh

@sakra cũng không làm việc cho tôi. "" 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 tiền tố dòng vớicmd /C
sakra

@sakra Tôi muốn loại trừ tập tin có tên với dấu cách CEEMEA & LATAM.doc. Tôi nên làm gì? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq

làm việc cho tôi nhưng không có dấu ngoặc kép bên ngoài: "C: \ Program Files (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090

77

Tôi chỉ tìm ra rằng trong trường hợp đường dẫn liên quan đến việc sử dụng các ký tự khoảng trắng, chẳng hạn, khi tôi cần truy cập vào ứng dụng xyzđó là vị trí nào:

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

Để chạy này từ dấu nhắc cmd của windows, bạn cần sử dụng

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

hoặc là

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

22

Nếu dấu ngoặc kép không giải quyết được vấn đề thì hãy thử, vd

dir /X ~1 c:\

để có được một danh sách các tên tập tin hoặc thư mục thay thế. Ví dụ đầu ra:

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)

Bây giờ sử dụng tên tệp hoặc thư mục 8 ký tự ngắn trong cột thứ 5, ví dụ PROGRA ~ 1 hoặc DEFAUL ~ 1.XML, trong các lệnh của bạn. Ví dụ:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 

Đây là cách dễ dàng. Không có trích dẫn hai lần mucky-muck liên quan.
Dave Anderson

Bạn có biết rằng ngắn 8.3 là một tùy chọn NTFS và có thể bị vô hiệu hóa không? Đừng dựa vào nó.
Zan Lynx

10

Kèm theo các đường dẫn chứa khoảng trắng với dấu ngoặc kép.

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

Sau đó, vấn đề nằm ở chỗ cú pháp đối số Rar.exethực sự là gì. Bạn có thể đang sử dụng nó sai. Có thể thử "D:\Hello 2\"hoặc "D:\Hello 2"thay vì "D:\Hello 2\*.*"?
JAB

cmd / C "C: \ Program Files (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (Nó không có khoảng trắng và nó hoạt động) nhưng làm thế nào để đối phó với không gian?
faressoft

@JAB nếu bạn cần loại trừ tệp có tên với khoảng trắng như CEEMEA & LATAM.doc. Nó nên là gì? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq

10

Cố gắng cung cấp tên đường dẫn phức tạp trong dấu ngoặc kép (và bao gồm phần mở rộng tệp ở cuối cho tệp.)

Đối với tệp:

call "C:\example file.exe"

Đối với thư mục:

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

CMD diễn giải văn bản với dấu ngoặc kép ("xyz") dưới dạng một chuỗi và văn bản trong dấu ngoặc đơn ('xyz') dưới dạng một lệnh. Ví dụ:

CHO %% A trong ('dir / b / s * .txt') do ('lệnh')

CHO %% A trong ('dir / b / s * .txt') do (echo "%% A")

Và một điều tốt, cmd không phải là trường hợp nhạy cảm như bash. Vì vậy, "New fiLE.txt" và "tệp mới.TXT" giống nhau.

* Lưu ý: Các biến %% A trong trường hợp trên là phân biệt chữ hoa chữ thường (%% A không bằng %% a).


Làm dấu gạch dưới trong tên tập tin đếm? Giống như 'file_name' vs 'tên tệp'
SqueakyBeak

7

Tôi thích kèm theo lệnh trong ()đó là hợp lệ batchđể dễ đọc hơn một chút:

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"

điều này làm việc cho tôi trong một tập tin hàng loạt


2

Chỉ cần thêm Dấu ngoặc kép

Ví dụ: "C: \ Users \ Tên người dùng"

Hy vọng nó đã được giải quyết!


7
Điều tương tự đã được nói nửa tá lần. Những gì thêm giá trị này thêm?
JJJ


0

Dấu cách trong Dấu nhắc khen ngợi (trong dòng mã lệnh VBA Shell)

Tôi đã gặp một vấn đề rất giống với kết quả là một khoảng trắng trong dấu nhắc lệnh khi tự động hóa thông qua VBA để lấy nội dung từ cửa sổ lệnh vào tệp văn bản. Chủ đề này là một trong nhiều bài tôi bắt gặp trên đường mà không hoàn toàn giúp tôi giải pháp.

Vì vậy, điều này có thể giúp những người khác có vấn đề tương tự: Vì cú pháp với dấu ngoặc kép luôn khó hiểu, tôi nghĩ rằng việc hiển thị một số ví dụ cụ thể luôn hữu ích. Vấn đề bổ sung mà bạn gặp phải khi sử dụng dấu nhắc lệnh trong VBA thông qua điều Shell, đó là dòng mã thường không bị lỗi khi có sự cố xảy ra: trên thực tế, một nháy mắt của cửa sổ khen thưởng màu đen đã khiến mọi người hiểu lầm.

Như ví dụ, ông nói tôi có một Thư mục, với một tệp văn bản trong đó như tại

C: \ Thư mục Alans \ test1.txt ( https://imgur.com/FELSdB6 )

Không gian trong tên thư mục đưa ra vấn đề.

Một cái gì đó như thế này sẽ hoạt động, giả sử Thư mục, AlansFolder, tồn tại

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

Điều này sẽ không làm việc. (Nó không có lỗi).

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

Bao gồm các cặp trích dẫn xung quanh đường dẫn sẽ làm cho nó hoạt động

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

(Nhân tiện, nếu tệp văn bản không tồn tại, thì nó sẽ được thực hiện).

Với lợi ích của nhận thức muộn, chúng ta có thể thấy rằng giải pháp của tôi đã kết hợp xấp xỉ với một số đã được đưa ra ..

Chuyển đổi dòng mã đó thành một lệnh thủ công, chúng ta sẽ có

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

Điều đó dường như làm việc

Điều này cũng hoạt động

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

Cái này không

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

Hình thức cuối cùng này cũng hoạt động và gắn kết với giải pháp từ sacra. Bạn phải thêm dấu ngoặc kép xung quanh mỗi đường dẫn và cũng kèm theo toàn bộ lệnh trong dấu ngoặc kép Giá trị ..

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

-3

Nó có thể giải quyết vấn đề này bằng lệnh cd , lệnh này hiểu khoảng trắng mà không cần dấu ngoặc kép và bạn có thể gọi bất kỳ chương trình nào theo cách này chẳng hạn:

C: \ Windows \ system32> cd c: \ Tệp chương trình \ MongoDB \ Server \ 3.2 \ bin

c: \ Tệp chương trình \ MongoDB \ Server \ 3.2 \ bin> mongo bây giờ lệnh nhắc lệnh mongo.exe

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.