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

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

myprogram.exe param1

программа запускается, но окно DOS остается открытым. Как я могу его закрыть?

11 ответов


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

start myProgram.exe param1
exit

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

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

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


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

START rest-of-your-program-name

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

@echo off
notepad c:\test.txt

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

@echo off
start notepad c:\test.txt

от меня вопрос:

start /b myProgram.exe params...

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

Если нет, вызовите скрипт VB

wscript.exe invis.vbs myProgram.exe %*

на Windows Script Host Run() метод требуется:

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

здесь Инвис.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

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

start "name" /B myprogram.exe param1

Это единственное, что сработало для меня, когда я попытался запустить класс 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)

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

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

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

exit

мое решение сделать это из GUI:

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

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

  3. изменить


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

открыть Task Scheduler:

  • Пуск -> Выполнить Поиск -> 'cmd'
  • тип taskschd.msc - > enter

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

надеюсь, что это помогает.


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

используйте сценарий VBS для вызова пакетного файла:

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

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


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

run myprogram.exe param1