Eu tenho um serviço do Windows (o servidor de integração Bamboo) que executa um arquivo em lotes como um subprocesso (um trabalho de construção) desse script. Nesse arquivo em lote, eu gostaria de iniciar um processo (vamos chamá-lo workerprocess.exe) e executar esse processo em segundo plano. Está tudo bem, eu usei:
start "title" /B workerprocess.exe
Está tudo bem e bem. O problema é que isso atrasa a conclusão do trabalho de construção. Portanto, o script em lote termina, mas, devido ao subprocesso workerprocess.exe, o serviço (Bamboo) não sabe que terminou: ainda aguarda (e exibe a saída do) workerprocess.exe.
Procurei na documentação o comando start e não consigo ver nada que faça o que quero. Vi essa pergunta, mas também não ajudou muito - o serviço ainda espera o processo terminar.
Então, suponho em resumo: como posso executar um novo processo a partir de um script em lote para que ele seja completamente desanexado e não retenha nada que esteja esperando a conclusão do script em lote.
fonte
Respostas:
Você já tentou o Hidden Start (HSTART) ? (Custa US $ 20)
Eu o uso pessoalmente para executar um trabalho em lotes por hora com a janela oculta. Eles também mencionam que você pode executar comandos seqüencialmente como um parâmetro (ou, por padrão, eu assumo) executado de forma assíncrona. Não sei como isso afetará sua contenção na CPU, memória ou disco ... mas o software também oferece a opção de esperar um pouco antes de executar a ação.
fonte
Todos os scripts vinculados podem ser baixados e salvos com o nome que você achar conveniente.
1) A solução IEXPRESS - como argumentos aceita apenas o comando e seus argumentos.
Exemplo de uso:
2) SCHTASKS - Novamente aceita apenas dois argumentos - o comando e os argumentos. Também verifica se foi iniciado com permissões elevadas e, se possível, obtém o PID do processo com o comando WEVTUTIL.
Exemplo de uso:
3) 'WScript.Shell' - o script é um invólucro completo de 'WScript.Shell' e todas as opções possíveis podem ser definidas nas opções de linha de comando.É um híbrido jscript / batch e pode ser chamado de bastão.
Exemplo de uso (para obter mais informações, imprima a ajuda com '-h'):
4) 'Win32_ProcessStartup' - novamente o invólucro completo e todas as opções são acessíveis através dos argumentos da linha de comando. Desta vez, é um híbrido WSF / lote com alguns Jscript e alguns pedaços de código VBScript - mas retorna o PID do processo iniciado. não oculto, algumas opções como coordenadas X / Y podem ser usadas.
Exemplo de uso (para obter mais informações, imprima a ajuda com '-h'). Isso exigirá o caminho completo para o executável / script, se não estiver no
%path%
:5) o. Solução NET . A maioria das opções das opções ProcessStartInfo são usadas (mas no final eu estava cansada demais para incluir tudo):
Exemplo de uso (para obter mais informações, imprima a ajuda com '-h'):
fonte