การใช้คำสั่ง“ เริ่มต้น” ด้วยพารามิเตอร์ที่ส่งผ่านไปยังโปรแกรมที่เริ่มต้น


224

ฉันมีเครื่องเสมือนใน Virtual PC 2007

ในการเริ่มจากเดสก์ท็อปฉันมีคำสั่งต่อไปนี้ในไฟล์แบตช์:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

แต่นั่นทำให้ DOS พรอมต์บนเครื่องโฮสต์จนกว่าเครื่องเสมือนจะปิดตัวลงและฉันออกจาก Virtual PC console มันน่ารำคาญ

ดังนั้นฉันจึงเปลี่ยนคำสั่งของฉันเพื่อใช้คำสั่ง START แทน:

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

แต่มันฉายากับพารามิเตอร์ที่ส่งผ่านไปยัง Virtual PC

START /?บ่งชี้ว่าพารามิเตอร์ไปในตำแหน่งนั้นอย่างแน่นอน มีใครใช้ START เพื่อเปิดโปรแกรมที่มีอาร์กิวเมนต์บรรทัดคำสั่งหลายรายการหรือไม่

คำตอบ:


467

START มีลักษณะเฉพาะที่เกี่ยวข้องกับเครื่องหมายคำพูดคู่รอบพารามิเตอร์แรก หากพารามิเตอร์แรกมีเครื่องหมายคำพูดคู่จะใช้สิ่งนั้นเป็น TITLE ที่เป็นตัวเลือกสำหรับหน้าต่างใหม่

ฉันเชื่อในสิ่งที่คุณต้องการคือ:

start "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc MY-PC -launch

กล่าวอีกนัยหนึ่งให้ตั้งชื่อว่างไว้ข้างหน้าชื่อของโปรแกรมเพื่อปลอมออก


2
เลิกใช้แล้วหรือไม่? ใน Win 7 ฉันได้รับStart-Process : Cannot validate argument on parameter 'FilePath'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again
geotheory

1
ใครจะจินตนาการได้ จำนวน upvotes ต่อคำตอบของคุณควรเป็นเหตุผลเพียงพอที่ Microsoft จะแก้ไข 'ความผิดปกติ' นี้
Piyush Soni

7
@geotheory ฉันรู้ว่านี่เป็นความคิดเห็นเก่า แต่ใน PowerShell การเริ่มต้นเป็นนามแฝงสำหรับกระบวนการเริ่มต้น ใน cmd.exe (บิตเก่า แต่ไม่คัดค้าน) "start" จะแตกต่างกัน พวกเขาทั้งสองมีวัตถุประสงค์สำหรับการเริ่มต้นกระบวนการอื่น ๆ แต่เริ่มต้นเป็นคำสั่งที่ฝังอยู่ในหน่วย cmd
Adam Plocher

ทำให้ฉันปวดหัวมาก ขอบคุณสำหรับการแก้ปัญหา!
uceumern

15

แทนที่จะเป็นชุดไฟล์คุณสามารถสร้างทางลัดบนเดสก์ท็อป

กำหนดเป้าหมายเป็น:

"c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

และคุณพร้อมแล้ว เนื่องจากคุณไม่ได้เริ่มพรอมต์คำสั่งเพื่อเปิดใช้จะไม่มี DOS Box


3

ช่องว่างคือปัญหาของ DOS / CMD ดังนั้นคุณควรไปที่ Path ผ่าน:

cd "c:\program files\Microsoft Virtual PC"

จากนั้นก็เริ่ม VPC ผ่าน:

start Virtual~1.exe -pc MY-PC -launch

~1หมายถึงครั้งแรกexeกับ"Virtual"ที่จุดเริ่มต้น ดังนั้นหากมี"Virtual PC.exe"และเป็น"Virtual PC1.exe"คนแรกจะเป็นVirtual~1.exeและครั้งที่สองVirtual~2.exeและอื่น ๆ

หรือใช้ VNC- ไคลเอนต์เช่น VirtualBox


1
สิ่งนี้ดูเหมือนจะเป็นการแก้ปัญหาที่สมเหตุสมผล แต่ไม่ได้แก้ปัญหาพื้นฐานซึ่งครอบคลุมโดยคำตอบที่ยอมรับ
Sam

1
สิ่งนี้จะไม่ทำงานหากไม่ได้เปิดใช้งานชื่อไฟล์แบบสั้น ฉันมักจะปิดการใช้งานชื่อไฟล์ 8.3 ในระบบของฉัน
phuclv

1

คำตอบเหล่านี้ไม่เหมาะกับฉัน

ฉันต้องใช้คำสั่ง Call แทน:

Call "\\Path To Program\Program.exe" <parameters>

ฉันไม่แน่ใจว่าสิ่งนี้จริง ๆ แล้วรอให้เสร็จสิ้น ... C ++ ที่เผยแพร่ซ้ำได้ที่ฉันติดตั้งนั้นเร็วพอที่ไม่สำคัญ


@Ren ขอบคุณสำหรับการแก้ไข ถ้าฉันเพิ่มคำตอบอีกฉันจะแน่ใจว่าได้ใช้รูปแบบการบล็อกรหัส
JustAnotherMikhail

0

คำตอบใน "ความผิดปกติ" ถูกต้องและตอบคำถามโดยตรง ดังที่ TimF ตอบเนื่องจากพารามิเตอร์แรกอยู่ในเครื่องหมายคำพูดจะถือว่าเป็นชื่อหน้าต่าง

นอกจากนี้โปรดทราบว่าตัวเลือก Virtual PC จะถูกใช้เป็นตัวเลือกสำหรับคำสั่ง 'เริ่ม' และไม่สามารถใช้สำหรับ 'เริ่มต้น' สิ่งนี้เป็นจริงสำหรับ Windows ทุกรุ่นที่มีคำสั่ง 'เริ่ม'

ปัญหานี้กับ 'เริ่มต้น' การปฏิบัติต่อพารามิเตอร์ที่ยกมาเป็นชื่อเรื่องเป็นที่น่ารำคาญมากยิ่งขึ้นว่าเพียงปัญหาที่โพสต์ หากคุณเรียกใช้สิ่งนี้:

start "some valid command with spaces"

คุณได้รับหน้าต่างพรอมต์คำสั่งใหม่พร้อมผลลัพธ์ที่ชัดเจนสำหรับชื่อหน้าต่าง น่ารำคาญยิ่งขึ้นหน้าต่างใหม่นี้ไม่ได้รับแบบอักษรสีหรือขนาดหน้าต่างที่กำหนดเองมันเป็นเพียงค่าเริ่มต้นสำหรับ cmd.exe


0

หากคุณต้องการผ่านพารามิเตอร์และไฟล์. exe ของคุณในโฟลเดอร์ test ของ c: drive

start "parameter" "C:\test\test1.exe" -pc My Name-PC -launch

หากคุณไม่ต้องการผ่านพารามิเตอร์และไฟล์. exe ในโฟลเดอร์ทดสอบของไดรฟ์ c:

start "" "C:\test\test1.exe" -pc My Name-PC -launch

หากคุณไม่ต้องการผ่านพารามิเตอร์และไฟล์. exe ในโฟลเดอร์ทดสอบของไดรฟ์ H: (อื่น ๆ )

start "" "H:\test\test1.exe" -pc My Name-PC -launch


0

หากคุณต้องใช้เครื่องหมายคำพูดคู่ที่พารามิเตอร์ใด ๆ คุณสามารถรับข้อผิดพลาด "'c: \ somepath' ไม่ได้รับการยอมรับคำสั่งภายในหรือภายนอกโปรแกรมที่ทำงานได้หรือไฟล์แบตช์" ฉันแนะนำวิธีแก้ปัญหาด้านล่างเมื่อใช้เครื่องหมาย qoutation สองรายการ: https://stackoverflow.com/a/43467194/3835640


0

คุณสามารถใช้เครื่องหมายคำพูดโดยใช้ [/D"Path"ใช้] /D เพียงสำหรับการระบุเส้นทางและไม่ได้เป็นโปรแกรมเส้นทาง + ที่ ปรากฏว่ารหัสทั้งหมดในบรรทัดเดียวกันที่ตามมากลับไปเป็นความหมายปกติซึ่งคุณไม่จำเป็นต้องแยกพา ธ และไฟล์ออก

    start  /D "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

หรือ:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE

จะเริ่ม IE ด้วยหน้าเว็บเริ่มต้น

    start  /D "TITLE" "C:\Program Files\Internet Explorer\" IEXPLORE.EXE www.bing.com

เริ่มต้นด้วย Bing แต่ไม่รีเซ็ตโฮมเพจของคุณ

/D หมายถึง "ไดเรกทอรี" และการใช้คำพูดก็โอเค!

ตัวอย่างผิด:

    start  /D "TITLE" "C:\Program Files\Internet Explorer\IEXPLORE.EXE"

ให้:

ข้อผิดพลาด " ไดเรกทอรีปัจจุบันไม่ถูกต้อง "

/Dต้องตามด้วยเส้นทางไดเรกทอรีเท่านั้น ตามด้วยพื้นที่และชุดไฟล์หรือโปรแกรมที่คุณต้องการเริ่ม / เรียกใช้

ผ่านการทดสอบและทำงานภายใต้ XP แต่ windows Vista / 7/8 อาจต้องมีการปรับแต่ง UAC

-Mrbios


-1

/b พารามิเตอร์

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch

พารามิเตอร์นี้ทำอะไร
Azeezah M

3
@AzeezahM / b หมายความว่าหน้าต่าง cmd ใหม่จะไม่ถูกเปิด นี่ไม่ได้ตอบคำถามของ op
aclave1


-4

วางคำสั่งไว้ในไฟล์แบตช์แล้วเรียกสิ่งนั้นพร้อมพารามิเตอร์

คุณลองสิ่งนี้ด้วยหรือยัง (ย้ายเครื่องหมายคำพูดสิ้นสุดเพื่อรวมพารามิเตอร์)

start "c:\program files\Microsoft Virtual PC\Virtual PC.exe -pc MY-PC -launch"

-4

เปลี่ยน "Virtual PC.exe" เป็นชื่อที่ไม่มีช่องว่างเช่น "VirtualPC.exe" ในโฟลเดอร์ เมื่อคุณเขียนstart "path"ด้วย "" CMD จะเริ่มหน้าต่าง cmd ใหม่พร้อมกับเส้นทางเป็นหัวเรื่อง เปลี่ยนชื่อเป็นชื่อที่ไม่มีช่องว่างเขียนสิ่งนี้บน Notepad และหลังจากการบันทึกเช่น Name.cmd หรือ Name.bat:

CD\
CD Program Files
CD Microsoft Virtual PC
start VirtualPC.exe
timeout 2
exit

คำสั่งนี้จะเปลี่ยนเส้นทาง CMD ไปยังโฟลเดอร์เริ่ม VirualPC.exe รอ 2 วินาทีและออก


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