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

У меня есть служба Windows (сервер интеграции Bamboo), которая запускает пакетный файл в качестве подпроцесса (задания сборки) этого сценария. В этом пакетном файле я хотел бы иметь возможность запустить процесс (назовем его workerprocess.exe) и запустить этот процесс в фоновом режиме. Это все хорошо, я использовал:

start "title" /B workerprocess.exe

это все хорошо и замечательно. Проблема в том, что это задерживает завершение задания сборки. Так пакетный скрипт заканчивается, но из-за workerprocess.исполняемые подпроцесса, услуги (бамбук) не знаю, что он закончил: он по-прежнему ждет (и показывает выход из) workerprocess.исполняемый.

Я посмотрел в документации для команды start, и я не вижу ничего, что делает то, что я хочу. Я видел этот вопрос но это тоже не очень помогло-служба все равно ждет завершения процесса.

Итак, я думаю, в резюме:как запустить новый процесс из пакета скрипт так, чтобы он полностью отделен и не имеет ничего, что ждет, что пакетный скрипт, чтобы закончить.

14
задан Community
11.12.2022 11:35 Количество просмотров материала 2508
Распечатать страницу

2 ответа

ты пробовал скрытый старт (HSTART)? (Стоит $20)

Я использую его лично для запуска почасового пакетного задания со скрытым окном. Они также упоминают, что вы можете запускать команды последовательно в качестве параметра (или по умолчанию, я предполагаю) асинхронно. Я не знаю, как это повлияет на ваши разногласия по ЦП, памяти или диску... но программное обеспечение также дает вам возможность подождать некоторое время перед выполнением действия.

2
отвечен Sun 2022-12-12 19:23

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

1)за решение - в качестве аргументов принимает только команду и ее аргументы.

пример использования:

call hidder.bat myBat.bat  myexe.exe
call myexe.exe

2) SCHTASKS - снова принимает только два аргумента-команда и аргументы.Также проверяет, запущен ли он с повышенными разрешениями и, если возможно, получает PID процесс с помощью команды WEVTUTIL.

пример использования:

call SCHPhidden.bat "cmd /c myBat.bat"  "argument"

3) ' WScript.Shell' - скрипт является полной оболочкой 'WScript.Shell ' и все возможные опции могут быть установлены через опции командной строки.Это гибрид JScript / batch и может называться bat.

пример использования (для получения дополнительной информации выведите справку с '- h'):

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 

4) 'Win32_ProcessStartup' - опять полный оболочка и все параметры доступны через аргументы командной строки.На этот раз это WSF / batch hybrid с некоторыми частями кода Jscript и VBScript, но он возвращает PID запущенного процесса.Если идентификатор процесса не скрыт, можно использовать некоторые параметры, например координаты X/Y.

пример использования (для получения дополнительной информации выведите справку с '- h').Для этого потребуется полный путь к исполняемому файлу/скрипту, если он не находится в %path%:

call win32process.bat "notepad" -arguments "/A openFile.txt"  -showWindow 0 -title "notepad"

5) The . NET решение . Большинство параметров ProcessStartInfo используются (но в конце я слишком устал, чтобы включать все).Должен возвращать PID, но не возвращает:

пример использования (для получения дополнительной информации выведите справку с '- h'):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal
2
отвечен npocmaka 2022-12-12 21:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх