it-swarm-ru.tech

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

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

myprogram.exe param1

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

164
Mister Dev

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

start myProgram.exe param1
exit
148
Patrick Desjardins

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

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

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

218
Marshall

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

START rest-of-your-program-name

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

@echo off
notepad c:\test.txt

Тем не менее, это не будет:

@echo off
start notepad c:\test.txt
50
Lasse Vågsæther Karlsen

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

start /b myProgram.exe params...

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

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

wscript.exe invis.vbs myProgram.exe %*

Метод Windows Script Host Run () принимает:

  • intWindowStyle: 0 означает «невидимые окна»
  • bWaitOnReturn: false означает, что вашему первому сценарию не нужно ждать завершения второго сценария

Вот 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
29
VonC

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

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

start "name" /B myprogram.exe param1
18
Chris Dail

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

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

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

exit
12
Gilco

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

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

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

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

  4. Измените поле RUN на свернутое.

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

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

0
Midas

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

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

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

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

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

0
Leustad

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

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

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

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

0
Ilyich

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

run myprogram.exe param1
0
nikc