ฉันจะใช้ช่องว่างในพรอมต์คำสั่งได้อย่างไร


192

ฉันจะใช้ช่องว่างใน Windows Command Line ได้อย่างไร

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: \ 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 นำหน้าบรรทัดด้วยcmd /C
sakra

@sakra CEEMEA & LATAM.docฉันต้องการที่จะไม่รวมไฟล์ที่มีชื่อที่มีช่องว่าง ฉันควรทำอย่างไรดี? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq

ทำงานให้ฉัน แต่ไม่มีการอ้างอิงภายนอก: "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: \ Program (x86) \ Jenkins \ workspace \ Map การทดสอบหน่วยตรวจสอบแผนที่ \ sqs-poller \ node_modules \ map-checker \ python \ unit_test.py "-d" C: \ Program Files (x86) \ Jenkins \ workspace \ Map การตรวจสอบยูนิตตัวตรวจสอบ \ MAP_CHECK_TMP \ #Test Case "-o" C: \ Program Files (x86) \ Jenkins \ workspace \ Map ตัวตรวจสอบหน่วย \ MAP_CHECK_TMP \ #Test Case "-o2" C: \ Program Files (x86) \ Jenkins \ workspace \ Map การทดสอบหน่วยตัวตรวจสอบแผนที่ \ MAP_CHECK_TMP \ #Test Case \ testcase_results.csv "" -l "C: \ Program Files (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 ตัวหรือชื่อโฟลเดอร์สั้น ๆ ในคอลัมน์ที่ 5 เช่น PROGRA ~ 1 หรือ DEFAUL ~ 1.XML ในคำสั่งของคุณ ตัวอย่างเช่น

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

นี่เป็นวิธีที่ง่าย ไม่มีคำพูดสองครั้งที่เกี่ยวข้อง
เดฟแอนเดอร์สัน

คุณทราบหรือไม่ว่าตัวย่อ 8.3 เป็นตัวเลือก NTFS และสามารถปิดใช้งานได้ อย่าพึ่งมัน
Zan Lynx

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" D: \ Hello \ File.rar D: \ Hello *. * (มันไม่มีที่ว่างและมันใช้งานได้) แต่จะทำอย่างไร จัดการกับช่องว่าง?
faressoft

@JAB CEEMEA & LATAM.docถ้าคุณต้องการที่จะไม่รวมไฟล์ที่มีชื่อที่มีช่องว่างเช่น มันควรเป็นอะไร? "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq

10

พยายามระบุชื่อพา ธ ที่ซับซ้อนในเครื่องหมายคำพูดคู่ (และรวมนามสกุลไฟล์ไว้ท้ายไฟล์)

สำหรับไฟล์:

call "C:\example file.exe"

สำหรับสารบบ

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

CMD ตีความข้อความด้วยเครื่องหมายคำพูดคู่ ("xyz") เป็นหนึ่งสตริงและข้อความภายในเครื่องหมายคำพูดเดี่ยว ('xyz') เป็นคำสั่ง ตัวอย่างเช่น:

FOR %% A ใน ('dir / b / s * .txt') ทำ ('คำสั่ง')

FOR %% A ใน ('dir / b / s * .txt') ทำ (echo "%% A")

และสิ่งหนึ่งที่ดีคำสั่ง cmd ไม่ได้เป็นตัวพิมพ์เล็กและใหญ่เช่น bash ดังนั้น "ใหม่ fiLE.txt" และ "ใหม่ไฟล์ TXT" ก็เหมือนกัน

* หมายเหตุ: ตัวแปร %% A ในกรณีข้างต้นเป็นตัวพิมพ์เล็กหรือตัวพิมพ์เล็ก (%% A ไม่เท่ากับ %% a)


ขีดเส้นใต้ในชื่อไฟล์จะถูกนับหรือไม่?
กดไลค์

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

1

คุณควรลองใช้คำพูด

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

2
สิ่งนี้ไม่น่าเชื่อถือ ในบางกรณี (ดูmicrosoft.com/resources/documentation/windows/xp/all/proddocs/ ...... - การประมวลผลเครื่องหมายคำพูด) ไฟล์ "C: \ Program.bat" จะถูกดำเนินการแทน
Micha Wiedenmann

0

ช่องว่างใน Commend Prompt (ในบรรทัดรหัสคำสั่ง VBA Shell)

ฉันมีปัญหาที่คล้ายกันมากซึ่งจบลงด้วยการเป็นที่ว่างใน command prompt เมื่อทำงานอัตโนมัติผ่าน VBA เพื่อรับเนื้อหาจากหน้าต่างคำสั่งลงในไฟล์ข้อความ เธรดนี้เป็นหนึ่งในหลาย ๆ วิธีที่ฉันไม่สามารถแก้ปัญหาให้ฉันได้

ดังนั้นสิ่งนี้อาจช่วยผู้อื่นที่มีปัญหาคล้ายกัน: เนื่องจากไวยากรณ์ที่มีเครื่องหมายคำพูดอยู่เสมอยากที่จะเข้าใจฉันคิดว่าการแสดงตัวอย่างที่เฉพาะเจาะจงนั้นมีประโยชน์เสมอ ปัญหาเพิ่มเติมที่คุณได้รับจากการใช้ command prompt ใน 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

แบบฟอร์มสุดท้ายนี้ยังทำงานและเชื่อมโยงกับการแก้ปัญหาจาก Sacra ….” คุณต้องเพิ่มเครื่องหมายคำพูดรอบแต่ละพา ธ และใส่คำสั่งทั้งหมดในเครื่องหมายคำพูด “ … ..

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

-3

มันสามารถแก้ปัญหานี้ได้ด้วยคำสั่งcdคำสั่งนี้เข้าใจช่องว่างโดยไม่ต้องใส่เครื่องหมายอัญประกาศคู่กันและคุณสามารถเรียกโปรแกรมด้วยวิธีนี้เช่น:

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

c: \ Program Files \ MongoDB \ Server \ 3.2 \ bin> mongo ตอนนี้เรียกพรอมต์คำสั่ง mongo.exe

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.