На данный момент мой командный файл выглядит так:
myprogram.exe param1
Программа запускается, но окно DOS остается открытым. Как я могу закрыть это?
На данный момент мой командный файл выглядит так:
myprogram.exe param1
Программа запускается, но окно DOS остается открытым. Как я могу закрыть это?
Ответы:
Вы можете использовать ключевое слово выхода. Вот пример из одного из моих командных файлов:
start myProgram.exe param1
exit
exit
в пакетный файл практически нет необходимости .
start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Используйте команду запуска, чтобы предотвратить ожидание программы командным файлом. Просто не забудьте поставить пустую двойную кавычку перед программой, которую вы хотите запустить после «Пуск». Например, если вы хотите запустить Visual Studio 2012 из пакетной команды:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
обратите внимание на двойную кавычку после запуска.
start <window name> <program name>
Посмотрите на команду СТАРТ, вы можете сделать это:
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 () принимает:
Вот 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
Это единственное, что сработало для меня, когда я попытался запустить класс 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)
Вы должны попробовать это. Запускает программу без окна. На самом деле он мигает на секунду, но уходит довольно быстро.
start "name" /B myprogram.exe param1
"title"
Вариант имеет важное значение. Если путь к программе содержит пробелы, он должен быть заключен в кавычки, поэтому мы должны добавить, "title"
чтобы избежать сбоя.
Как решить «космическую проблему» и локальные зависимости:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
Множество ответов на этот вопрос уже есть, но я публикую это, чтобы прояснить что-то важное, хотя это не всегда так:
Start "C:\Program Files\someprog.exe"
Может вызывать проблемы в некоторых версиях Windows, так как Start
фактически ожидает, что первый набор кавычек будет заголовком Windows. Поэтому рекомендуется сначала заключить в двойную кавычку комментарий или пустой комментарий:
Start "" "C:\Program Files\someprog.exe"
или
Start "Window Title" "C:\Program Files\someprog.exe"
Мое решение сделать это из графического интерфейса:
Создайте ярлык для программы, которую вы хотите запустить;
Изменить свойства ярлыка;
Измените TARGET
поле на %COMSPEC% /C "START "" "PROGRAMNAME""
;
Измените RUN
поле на свернутое.
Готов! Посмотрите, как вам это нравится ...
PS: параметры программы могут быть вставлены между двумя окончательными кавычками; PROGRAMNAME
строка может быть либо имя файла, относительный или абсолютный путь - если поставить абсолютный путь и стереть букву и точку с запятой, то это будет работать в флэшке , независимо от того , что письмо хост - компьютер присваивает ему .. . (также, если вы поместите ярлык в той же папке и предшествовать имя файла программы в PROGRAMNAME
с %CD%
переменным пути будет всегда совпадать, так же прием можно использовать в START IN
поле).
Если вы хотите запустить этот пакетный файл как запланировано или всегда; Вы можете использовать инструмент расписания Windows, и он не открывается в окне при запуске командного файла.
Чтобы открыть Task Scheduler
:
'cmd'
taskschd.msc
-> введитеС правой стороны щелкните Create Basic Task
и следуйте меню.
Надеюсь это поможет.
Вот мое предпочтительное решение. Это взято из ответа на аналогичный вопрос.
Используйте VBS Script для вызова командного файла:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
Скопируйте строки выше в редактор и сохраните файл с расширением .VBS.