Использование команды «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 для запуска программы с несколькими аргументами командной строки?

JosephStyons
источник

Ответы:

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.

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

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

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

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

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

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

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

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

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

start "some valid command with spaces"

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

BitDreamer
источник
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

Mack
источник
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

Mrbios
источник
-1

/b параметр

start /b "" "c:\program files\Microsoft Virtual PC\Virtual PC.exe" -pc "MY-PC" -launch
T.Todua
источник
Что делает этот параметр?
Azeezah M
3
@AzeezahM / b означает, что новое окно cmd не будет открыто. Это не отвечает на вопрос оп, хотя.
aclave1
-4

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

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

?

albertein
источник
-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.
Майкл Бек