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

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

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

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

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

Итак, я изменил свою команду, чтобы вместо этого использовать команду START:

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

Но он задыхается от параметров, переданных в Virtual PC.

START /? указывает, что параметры действительно находятся в этом месте. Кто-нибудь использовал START для запуска программы с несколькими аргументами командной строки?

Ответ 1

У START есть особенность, связанная с двойными кавычками вокруг первого параметра. Если первый параметр имеет двойные кавычки, он использует это как дополнительный TITLE для нового окна.

Я считаю, что вы хотите:

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

Другими словами, дайте ему пустой заголовок перед именем программы, чтобы подделать его.

Ответ 2

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

Задайте цель:

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

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

Ответ 3

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

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

а затем просто запустите VPC через:

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

~1 означает первый exe с "Virtual" в начале. Поэтому, если есть "Virtual PC.exe" и a "Virtual PC1.exe", первым будет Virtual~1.exe и второй Virtual~2.exe и т.д.

Или используйте VNC-клиент, например VirtualBox.

Ответ 4

Вы можете использовать кавычки, используя [ /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

Ответ 5

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

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

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

start "some valid command with spaces"

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

Ответ 6

Если вы должны использовать двойную кавычку по любому параметру, вы можете получить ошибку "c:\somepath" не распознается внутренней или внешней командой, оперативной программой или командным файлом ". Я предлагаю ниже решение при использовании двойной метки qoutation: fooobar.com/questions/36090/...

Ответ 7

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

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

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

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

Ответ 8

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

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

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

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

Если вам не нужно передавать параметр и ваш .exe файл в тестовую папку диска H: (Any Other)

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

Ответ 9

"/b" параметр

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

Ответ 10

Измените "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 секунды и выйдет.

Ответ 11

Вы пробовали:

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

?

Ответ 12

Поместите команду в пакетный файл и вызовите это с параметрами.

Кроме того, вы еще это пробовали? (Переместить конечную цитату для инкапсуляции параметров)

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