Sử dụng lệnh khởi động trên mạng với các tham số được truyền cho chương trình đã bắt đầu


223

Tôi có một máy ảo trong Virtual PC 2007.

Để bắt đầu nó từ máy tính để bàn, tôi có lệnh sau trong một tệp bó:

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

Nhưng điều đó để lại một dấu nhắc dos trên máy chủ cho đến khi máy ảo tắt và tôi thoát khỏi bảng điều khiển Virtual PC. Điều đó thật khó chịu.

Vì vậy, tôi đã thay đổi lệnh của mình để sử dụng lệnh START, thay vào đó:

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

Nhưng nó bóp nghẹt các tham số được truyền vào Virtual PC.

START /?chỉ ra rằng các tham số thực sự đi trong vị trí đó. Có ai đã sử dụng START để khởi chạy một chương trình có nhiều đối số dòng lệnh chưa?

Câu trả lời:


466

START có một đặc thù liên quan đến dấu ngoặc kép xung quanh tham số đầu tiên. Nếu tham số đầu tiên có dấu ngoặc kép, nó sử dụng đó làm TITLE tùy chọn cho cửa sổ mới.

Tôi tin những gì bạn muốn là:

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

Nói cách khác, đặt cho nó một tiêu đề trống trước tên của chương trình để giả mạo nó.


2
Đây có phải là phản đối? Trong Win 7 tôi nhận đượcStart-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
Ai có thể tưởng tượng được. Chỉ cần số lượng câu trả lời cho câu trả lời của bạn là đủ lý do để Microsoft khắc phục 'tính đặc thù' này.
Piyush Soni

7
@geotheory Tôi nhận ra đây là một nhận xét cũ, nhưng trong PowerShell, start là một bí danh cho Start-Process. Trong cmd.exe (một chút lỗi thời, nhưng không phản đối) "bắt đầu" là khác nhau. Cả hai đều có nghĩa là để bắt đầu các quá trình khác, nhưng bắt đầu là một lệnh nhúng cũ trong cmd.
Adam Plocher

Điều này khiến tôi rất đau đầu. Cảm ơn giải pháp!
uceumern

15

Thay vì một tệp bó, bạn có thể tạo một lối tắt trên màn hình nền.

Đặt mục tiêu thành:

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

và bạn đã sẵn sàng. Vì bạn không khởi động một dấu nhắc lệnh để khởi chạy nó, nên sẽ không có DOS Box.


3

Các không gian là các vấn đề về DOS / CMD vì vậy bạn nên truy cập Đường dẫn qua:

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

và sau đó chỉ cần khởi động VPC thông qua:

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

~1có nghĩa là đầu tiên exevới "Virtual"lúc bắt đầu. Vì vậy, nếu có một "Virtual PC.exe""Virtual PC1.exe"đầu tiên sẽ là Virtual~1.exevà thứ hai Virtual~2.exevà như vậy.

Hoặc sử dụng Máy khách VNC như VirtualBox.


1
Điều này có vẻ như là một cách giải quyết hợp lý, nhưng nó không thực sự giải quyết được vấn đề tiềm ẩn, được bao phủ bởi câu trả lời được chấp nhận.
Sam

1
điều này sẽ không hoạt động nếu tên tập tin ngắn không được kích hoạt. Tôi luôn vô hiệu hóa tên tệp 8.3 trong các hệ thống của mình
phuclv

1

Không có câu trả lời nào trong số này làm việc cho tôi.

Thay vào đó, tôi phải sử dụng lệnh Gọi:

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

Tôi không chắc điều này thực sự đang chờ hoàn thành ... C ++ Redistributable tôi đã cài đặt đủ nhanh để nó không thành vấn đề


@rene cảm ơn đã chỉnh sửa. Nếu tôi thêm bất kỳ câu trả lời nào nữa, tôi chắc chắn sẽ sử dụng định dạng khối mã
JustAntherMikhail

0

Câu trả lời trong "đặc thù" là chính xác và trực tiếp trả lời câu hỏi. Như TimF đã trả lời, vì tham số đầu tiên nằm trong dấu ngoặc kép, nên nó được coi là tiêu đề cửa sổ.

Cũng lưu ý rằng các tùy chọn PC ảo đang được coi là tùy chọn cho chính lệnh 'bắt đầu' và không hợp lệ cho 'bắt đầu'. Điều này đúng với tất cả các phiên bản Windows có lệnh 'bắt đầu'.

Vấn đề này với 'bắt đầu' coi tham số được trích dẫn là một tiêu đề thậm chí còn khó chịu hơn chỉ là vấn đề được đăng. Nếu bạn chạy này:

start "some valid command with spaces"

Bạn nhận được một cửa sổ nhắc lệnh mới, với kết quả rõ ràng cho tiêu đề cửa sổ. Thậm chí khó chịu hơn, cửa sổ mới này không kế thừa phông chữ, màu sắc hoặc kích thước cửa sổ tùy chỉnh, nó chỉ là mặc định cho cmd.exe.


0

Nếu bạn muốn truyền tham số và tệp .exe của bạn trong thư mục thử nghiệm của ổ đĩa c:

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

Nếu bạn không muốn truyền tham số và tệp .exe của mình trong thư mục kiểm tra của ổ đĩa c:

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

Nếu bạn không muốn truyền tham số và tệp .exe của mình trong thư mục kiểm tra của ổ H: (Bất kỳ loại nào khác)

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


0

Nếu bạn phải sử dụng dấu ngoặc kép ở bất kỳ tham số nào, bạn có thể gặp lỗi "'c: \ somepath' không được nhận ra lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó". Tôi đề xuất giải pháp bên dưới khi sử dụng dấu hai lần: https://stackoverflow.com/a/43467194/3835640


0

Bạn có thể sử dụng dấu ngoặc kép bằng cách sử dụng [ /D"Path"] /D chỉ sử dụng để chỉ định đường dẫn chứ không phải đường dẫn + chương trình. Dường như tất cả các mã trên cùng một dòng đi theo nghĩa bình thường, bạn không cần tách đường dẫn và tệp.

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

hoặc là:

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

sẽ khởi động IE với trang web mặc định.

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

bắt đầu với Bing, nhưng không thiết lập lại trang chủ của bạn.

/D là viết tắt của "thư mục" và sử dụng dấu ngoặc kép là OK!

VÍ DỤ:

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

cho:

LRI " Thư mục hiện tại không hợp lệ. "

/Dchỉ được theo sau bởi một đường dẫn thư mục. Sau đó, không gian và các tập tin hoặc chương trình bạn muốn bắt đầu / chạy

Đã thử nghiệm và hoạt động trong XP nhưng windows Vista / 7/8 có thể cần một số điều chỉnh cho UAC.

-Mrbios


-1

/b tham số

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

Tham số này làm gì?
Azeezah M

3
@AzeezahM / b có nghĩa là cửa sổ cmd mới sẽ không được mở. Điều này không trả lời câu hỏi của op mặc dù.
aclave1

-4

bạn đã thử chưa

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

?


-4

Đặt lệnh bên trong một tệp bó và gọi nó với các tham số.

Ngoài ra, bạn đã thử điều này chưa? (Di chuyển dấu ngoặc kép để đóng gói các tham số)

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

-4

Thay đổi "Virtual PC.exe" thành một tên không có không gian như "VirtualPC.exe" trong thư mục. Khi bạn viết start "path"bằng "", CMD bắt đầu một cửa sổ cmd mới với đường dẫn làm tiêu đề. Thay đổi tên thành tên không có dấu cách, viết tên này vào Notepad và sau đó lưu lại như Name.cmd hoặc Name.bat:

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

Lệnh này sẽ chuyển hướng CMD đến thư mục, khởi động VirualPC.exe, đợi 2 giây và thoát.


1
Điều gì xảy ra nếu phần mềm được cập nhật? Đột nhiên bạn có một virtualpc.exe mồ côi.
Michael Beck
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.