Как запустить программу из пакетного файла, не покидая консоль после запуска программы?

На данный момент мой пакетный файл выглядит так:

myprogram.exe param1

Запуск программы, но Dos Windows все еще открыта... как ее закрыть?

Ответ 1

Вы можете использовать ключевое слово exit. Вот пример из одного из моих пакетных файлов:

start myProgram.exe param1
exit

Ответ 2

Используйте команду start, чтобы пакетный файл не ожидал выполнения программы. Просто не забудьте поставить пустую двойную кавычку перед программой, которую вы хотите запустить после "Пуск". Например, если вы хотите запустить Visual Studio 2012 из пакетной команды:

Start ""  "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

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

Ответ 3

Посмотрите на команду START, вы можете сделать это:

START rest-of-your-program-name

Например, этот пакетный файл будет ждать выхода из блокнота:

@echo off
notepad c:\test.txt

Однако это не будет:

@echo off
start notepad c:\test.txt

Ответ 4

Из моего собственного вопроса:

start /b myProgram.exe params...

работает, если вы запускаете программу из существующего сеанса DOS.

Если нет, вызовите vb script

wscript.exe invis.vbs myProgram.exe %*

Windows Script Метод хоста():

  • intWindowStyle: 0 означает "невидимые окна"
  • bWaitOnReturn: false означает, что ваш первый Script не должен ждать завершения второго Script

Вот invis.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

Ответ 5

Вы должны попробовать это. Он запускает программу без окна. Он на самом деле вспыхивает на секунду, но уходит довольно быстро.

start "name" /B myprogram.exe param1

Ответ 6

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

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

Вы можете настроить команду start так, как вы хотите для своего проекта, следуя правильному синтаксису:

Syntax
      START "title" [/Dpath] [options] "command" [parameters]

Key:
   title      : Text for the CMD window title bar (required)
   path       : Starting directory
   command    : The command, batch file or executable program to run
   parameters : The parameters passed to the command

Options:
   /MIN       : Minimized
   /MAX       : Maximized
   /WAIT      : Start application and wait for it to terminate
   /LOW       : Use IDLE priority class
   /NORMAL    : Use NORMAL priority class
   /HIGH      : Use HIGH priority class
   /REALTIME  : Use REALTIME priority class

   /B         : Start application without creating a new window. In this case
                ^C will be ignored - leaving ^Break as the only way to 
                interrupt the application
   /I         : Ignore any changes to the current environment.

   Options for 16-bit WINDOWS programs only

   /SEPARATE   Start in separate memory space (more robust)
   /SHARED     Start in shared memory space (default)

Ответ 7

Как решить "космическую проблему" и локальные зависимости:

@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe

cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe

exit

Ответ 8

Мое решение сделать это из графического интерфейса:

  • Создайте ярлык для программы, которую вы хотите запустить;

  • Изменить свойства ярлыка;

  • Измените поле TARGET на %COMSPEC% /C "START "" "PROGRAMNAME"";

  • Измените поле RUN для минимизации.

Готово! Посмотрите, как вам нравится...

PS: параметры программы могут быть вставлены между двумя конечными кавычками; строка PROGRAMNAME может быть либо именем файла, либо относительным, либо абсолютным путем - если вы ввели абсолютный путь и стираете букву диска и точку с запятой, то это будет работать в thumbdrive независимо от того, какую букву присваивает главный компьютер это... (также, если вы поместите ярлык в ту же папку и предшествуете имени файла программы в PROGRAMNAME с помощью переменной %CD%, пути всегда будут совпадать, такой же трюк можно использовать в поле START IN).

Ответ 9

Если этот командный файл - это то, что вы хотите запустить по расписанию или всегда; вы можете использовать инструмент планирования окон, и он не открывается в окне при запуске командного файла.

Чтобы открыть Task Scheduler:

  • Пуск → Выполнить/Поиск → 'cmd'
  • Введите taskschd.msc → enter

С правой стороны нажмите Create Basic Task и следуйте меню.

Надеюсь, что это поможет.

Ответ 10

Вот мое предпочтительное решение. Это взято из ответа на аналогичный вопрос.

Используйте VBS Script для вызова командного файла:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing

Скопируйте строки выше в редактор и сохраните файл с расширением .VBS.

Ответ 11

У меня была эта проблема, и для меня это работало:

run myprogram.exe param1