Использование команды «start» с параметрами, переданными в запущенную программу


224

У меня есть виртуальная машина в Virtual PC 2007.

Чтобы запустить его с рабочего стола, у меня есть следующая команда в командном файле:

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

Но из-за этого на хост-машине остается запрос на дос, пока виртуальная машина не выключится, и я не выйду из консоли Virtual PC. Это раздражает.

Поэтому я изменил свою команду, чтобы использовать вместо нее команду СТАРТ:

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
Кто бы мог подумать. Только количество откликов на ваш ответ должно быть достаточной причиной, чтобы Microsoft исправила эту «особенность».
Пиюш Сони

7
@geotheory Я понимаю, что это старый комментарий, но в PowerShell start - это псевдоним Start-Process. В cmd.exe (немного устаревший, но не устаревший) «запуск» отличается. Они оба предназначены для запуска других процессов, но start - это старая встроенная команда в cmd.
Адам Плохер

Это вызвало у меня много головной боли. Спасибо за решение!
августа

15

Вместо командного файла вы можете создать ярлык на рабочем столе.

Установите цель:

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

и все готово Поскольку вы не запускаете командную строку для ее запуска, DOS Box не будет.


3

Пробелы - это проблемы DOS / CMD, поэтому вы должны перейти на путь через:

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
Это выглядит как разумный обходной путь, но на самом деле он не решает основную проблему, которая покрывается принятым ответом.
Сэм

1
это не будет работать, если короткие имена файлов не включены. Я всегда отключаю 8.3 имен файлов в моих системах
phuclv

1

Ни один из этих ответов не работал для меня.

Вместо этого мне пришлось использовать команду Call:

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

Я не уверен, что это на самом деле ждет завершения ... Распространяемый C ++, который я устанавливал, прошел достаточно быстро, чтобы это не имело значения


@rene спасибо за редактирование. Если я добавлю больше ответов, я обязательно буду использовать формат блока кода
JustAnotherMikhail

0

Ответ в «своеобразии» правильный и прямо отвечает на вопрос. Как ответил ТимФ, поскольку первый параметр находится в кавычках, он рассматривается как заголовок окна.

Также обратите внимание, что параметры Virtual PC рассматриваются как параметры самой команды start, и они недопустимы для start. Это верно для всех версий Windows, в которых есть команда «Пуск».

Эта проблема с «началом» обработки цитируемого параметра как заголовка еще более раздражает, чем просто опубликованная проблема. Если вы запустите это:

start "some valid command with spaces"

Вы получаете новое окно командной строки с очевидным результатом для заголовка окна. Еще более раздражающим является то, что это новое окно не наследует настроенный шрифт, цвета или размер окна, оно просто по умолчанию для cmd.exe.


0

Если вы хотите передать параметр и ваш файл .exe в тестовую папку на диске c:

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: (Any Other)

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


0

Если вы должны использовать двойные кавычки для любого параметра, вы можете получить ошибку «c: \ somepath» не распознается внутренней или внешней командой, работающей программой или пакетным файлом ». Я предлагаю решение ниже при использовании двойной кавычки: 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 не будет открыто. Это не отвечает на вопрос оп, хотя.
aclave1

-4

ты пробовала:

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

?


-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 с путем в качестве заголовка. Измените имя на имя без пробела, напишите это в Блокноте и после этого сохраните как 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.
Майкл Бек
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.