Как запустить программу с аргументами командной строки в Windows 'cmd с командой' start '?

Мне нужно запустить программу (виртуальную машину) в фоновом режиме с помощью команды start в командной строке Windows 7. Обычно вы делаете это так:

 start /b cmd yourprogram 

Но мне нужно передать некоторые аргументы и когда мне это нравится (без флага /b чтобы увидеть отладочную информацию):

  • Как создать несколько папок и называть их, читая строки из текстового файла?
  • Macintosh OS X Сценарий выхода
  • Запуск цикла - но подождите, пока строка слов в файле журнала продолжит
  • Почему «cd ..» работает в командной строке Windows?
  • Ярлык для открытия cmd.exe в определенном месте
  • В чем разница между оболочкой, консолью и терминалом?
  •  start C:\Users\USER>start "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64" 

    Я получаю это сообщение об ошибке:

    Windows не может найти «-startvm». Убедитесь, что вы набрали имя правильно, а затем повторите попытку.

    С другой стороны, когда я делаю это в текущем окне командной строки без start в начале, виртуальная машина работает нормально – но на переднем плане.

    Любые решения?

  • Файлы Windows 7 HOSTS продолжают возвращать свое разрешение обратно на READ-ONLY
  • Как создать виртуальное аудиоустройство и поток аудио вход с ним
  • Как искать только папки в Windows 7 вместо папок И файлов
  • Правильный способ отключения индексирования в Windows 7
  • Почему окна не могут создать системный раздел?
  • Каковы настройки системного пути по умолчанию на Windows 7 64bit?
  • 2 Solutions collect form web for “Как запустить программу с аргументами командной строки в Windows 'cmd с командой' start '?”

     start /b "" "c:\Program Files\Oracle\VirtualBox\VBoxHeadless.exe" -startvm "debian604 64" 

    Если вы читаете список параметров с помощью start /? :

     START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B] [command/program] [parameters] "title" Title to display in window title bar. command/program If it is an internal cmd command or a batch file then the command processor is run with the /K switch to cmd.exe. This means that the window will remain after the command has been run. If it is not an internal cmd command or batch file then it is a program and will run as either a windowed application or a console application. parameters These are the parameters passed to the command/program. 

    Он ожидает title заключенный в кавычки ( " ). Поскольку ваш путь к программе включал кавычки, он интерпретировался как заголовок. Добавляет явный заголовок (в данном случае пустой, "" ).


    Альтернативный метод использует /d переключатель для указания пути. В частности:

     start /b /d "c:\Program Files\Oracle\VirtualBox\" VBoxHeadless.exe -startvm "debian604 64" 

    Кажется, он принимает первый аргумент после /d переключателя в качестве пути, даже если он указан, и если следующий аргумент не цитируется, то это работает. Все, что распознается как команда / программа, передается в качестве параметра этой команде / программе. Обратите внимание, что это не сработает, если команда / программа имеет пробелы в имени, например VBox Headless.exe , поскольку для этого потребуются кавычки и будут распознаны как заголовок.


    В целом, первый (явный заголовок) метод, вероятно, лучше. Это был плохой выбор дизайна со стороны Microsoft, они действительно должны были добавить переключатель для названия, а не «первый аргумент, заключенный в кавычки?».

    На самом деле принятый ответ все еще не является решением. Закрытие окна cmd, в котором выполнялась команда, приведет к уничтожению процесса vboxheadless с запущенной виртуальной машиной.

    Используя приведенный ниже подход, PowerShell будет запускать независимый процесс.

    В cmd запустите:

     cd "c:\Program Files\Oracle\VirtualBox" vboxmanage list vms 

    Это вернет что-то вроде:

     "Webserver LAP" {8748b594-7e2d-4d8d-8785-999940766754} 

    Теперь возьмите UUID и запустите следующую (еще в cmd):

     powershell start-process 'C:\program files\oracle\virtualbox\vboxheadless' '-s 8748b594-7e2d-4d8d-8785-999940766754' -WindowStyle Hidden 

    Спасибо автору этой статьи .

    Давайте будем гением компьютера.