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

<p>на данный момент мой командный файл выглядит так:</p><pre><code>myprogram.exe param1 </code></pre><p>программа запускается, но окно dos остается открытым. как я могу закрыть это?</p>

<p>вы можете использовать ключевое слово выхода. вот пример из одного из моих командных файлов:</p><pre><code>start myprogram.exe param1 exit </code></pre>

<p>используйте команду запуска, чтобы предотвратить ожидание программы командным файлом. просто не забудьте поставить пустую двойную кавычку перед программой, которую вы хотите запустить после «пуск» . например, если вы хотите запустить visual studio 2012 из пакетной команды:</p><pre><code>start "" "c:\program files (x86)\microsoft visual studio 11.0\common7\ide\devenv.exe" </code></pre><p>обратите внимание на двойную кавычку после запуска. </p>

<p>посмотрите на команду старт, вы можете сделать это:</p><pre><code>start rest-of-your-program-name </code></pre><p>например, этот пакетный файл будет ожидать выхода из блокнота:</p><pre><code>@echo off notepad c:\test.txt </code></pre><p>тем не менее, это не будет:</p><pre><code>@echo off start notepad c:\test.txt </code></pre>

<p>из моего <a href="https://stackoverflow.com/questions/298562">собственного вопроса</a> :</p><pre><code>start /b myprogram.exe params... </code></pre><p>работает, если вы запускаете программу из существующего сеанса dos.</p><p>если нет, вызовите скрипт vb</p><pre><code>wscript.exe invis.vbs myprogram.exe %* </code></pre><p>метод <a href="https://stackoverflow.com/questions/298562">windows script host run ()</a> принимает:</p><ul> <li>intwindowstyle: 0 означает «невидимые окна»</li> <li>bwaitonreturn: false означает, что вашему первому сценарию не нужно ждать завершения второго сценария</li> </ul><p>вот invis.vbs:</p><pre class="lang-vbs prettyprint-override"><code>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 </code></pre>

<p>это единственное, что сработало для меня, когда я попытался запустить класс java из командного файла:</p><p><code>start "cmdwindowtitle" /b "javaw" -cp . testprojectpak.mainform</code></p><p>вы можете настроить команду <code>start</code> так, как хотите для своего проекта, следуя правильному синтаксису:</p><pre><code>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) </code></pre>

<p>вы должны попробовать это. запускает программу без окна. на самом деле он мигает на секунду, но уходит довольно быстро.</p><pre><code>start "name" /b myprogram.exe param1 </code></pre>

<p>как решить «космическую проблему» и локальные зависимости:</p><pre><code>@echo off cd "c:\program files\heidisql" start heidisql.exe cd "c:\program files (x86)\google\chrome\application" start chrome.exe exit </code></pre>

<p>мое решение сделать это из графического интерфейса:</p><ol> <li><p>создайте ярлык для программы, которую вы хотите запустить;</p></li> <li><p>изменить свойства ярлыка;</p></li> <li><p>измените поле <code>target</code> на <code>%comspec% /c "start "" "programname""</code>;</p></li> <li><p>измените поле <code>run</code> на свернутое.</p></li> </ol><p>готовы! посмотрите, как вам это нравится ...</p><p>ps: параметры программы могут быть вставлены между двумя окончательными кавычками; строка <code>programname</code> может быть либо именем файла, либо относительным, либо абсолютным путем - если вы введете абсолютный путь и удалите букву диска и точку с запятой, то это будет работать в режиме большого пальца, независимо от того, какую букву ему назначает хост-компьютер. .. (также, если вы поместите ярлык в ту же папку и перед именем файла программы в <code>programname</code> укажите переменную <code>%cd%</code>, пути всегда будут совпадать; один и тот же прием можно использовать в поле <code>start in</code>).</p>

<p>если вы хотите запустить этот пакетный файл как запланировано или всегда; вы можете использовать инструмент расписания windows, и он не открывается в окне при запуске командного файла. </p><p>чтобы открыть <code>task scheduler</code>:</p><ul> <li>пуск -> выполнить/поиск -> <code>'cmd'</code></li> <li>введите <code>taskschd.msc</code> -> введите</li> </ul><p>с правой стороны нажмите <code>create basic task</code> и следуйте меню.</p><p>надеюсь это поможет.</p>

<p>вот мое предпочтительное решение. он взят из <a href="https://stackoverflow.com/a/21130357/2796593">ответа</a> на аналогичный вопрос.</p><p>используйте vbs script для вызова командного файла:</p><pre class="lang-vbs prettyprint-override"><code>set wshshell = createobject("wscript.shell") wshshell.run chr(34) & "c:\path\to\your\batchfile.bat" & chr(34), 0 set wshshell = nothing </code></pre><p>скопируйте строки выше в редактор и сохраните файл с расширением .vbs.</p>

<p>у меня была эта проблема, и у меня сработало следующее:</p><pre><code>run myprogram.exe param1 </code></pre>