У меня есть служба Windows (сервер интеграции Bamboo), которая запускает пакетный файл как подпроцесс (задание сборки) этого сценария. В этом пакетном файле я хотел бы иметь возможность запустить процесс (назовем его workerprocess.exe) и запустить этот процесс в фоновом режиме. Это все хорошо, я использовал:
start "title" /B workerprocess.exe
Это все хорошо. Проблема заключается в том, что это задерживает завершение задания сборки. Таким образом, пакетный сценарий завершается, но из-за подпроцесса workerprocess.exe служба (Bamboo) не знает, что она завершила: она все еще ожидает (и отображает выходные данные) workerprocess.exe.
Я посмотрел в документации для команды запуска, и я не вижу ничего, что делает то, что я хочу. Я видел этот вопрос, но на самом деле это тоже не помогло - служба все равно заканчивается ожиданием завершения процесса.
Итак, я подытожу в итоге: как я могу запустить новый процесс из пакетного сценария, чтобы он был полностью отсоединен и не содержал ничего, что, как оказалось, ожидает завершения этого пакетного сценария.
источник
Ответы:
Вы пробовали Hidden Start (HSTART) ? (Стоит 20 долларов)
Я использую это лично, чтобы запустить почасовую пакетную работу со скрытым окном. Они также упоминают, что вы можете запускать команды последовательно как параметр (или, по-моему, по умолчанию), запускаемый асинхронно. Я не знаю, как это повлияет на вашу конкуренцию с процессором, памятью или диском ... но программное обеспечение также дает вам возможность подождать некоторое время, прежде чем выполнять действие.
источник
Все связанные скрипты могут быть загружены и сохранены под любым удобным вам именем.
1) Решение IEXPRESS - в качестве аргументов принимает только команду и ее аргументы.
Пример использования:
2) SCHTASKS - снова принимает только два аргумента - команду и аргументы. Также проверяет, запущен ли он с повышенными правами и, если возможно, получает PID процесса с помощью команды WEVTUTIL.
Пример использования:
3) 'WScript.Shell' - скрипт является полной оболочкой для 'WScript.Shell', и каждый возможный параметр может быть установлен через параметры командной строки. Это гибрид jscript / batch и может быть вызван как bat.
Пример использования (для получения дополнительной информации напечатайте справку с '-h'):
4) «Win32_ProcessStartup» - снова полная оболочка и все параметры доступны через аргументы командной строки. На этот раз это WSF / пакетный гибрид с некоторым Jscript и некоторыми фрагментами кода VBScript - но он возвращает PID запущенного процесса. Если идентификатор процесса не скрыты некоторые параметры, такие как координаты X / Y.
Пример использования (для получения дополнительной информации напечатайте справку с '-h'). Для этого потребуется полный путь к исполняемому файлу / скрипту, если его нет в
%path%
:5). NET решение . Используются большинство параметров ProcessStartInfo (но в конце я слишком устал, чтобы включать все):
Пример использования (для получения дополнительной информации напечатайте справку с '-h'):
источник