そのスクリプトのサブプロセス(ビルドジョブ)としてバッチファイルを実行するWindowsサービス(Bamboo統合サーバー)があります。そのバッチファイル内で、プロセスを開始し(workerprocess.exeと呼びましょう)、そのプロセスをバックグラウンドで実行できるようにしたいと考えています。これはすべて良いです、私は使用しました:
start "title" /B workerprocess.exe
それですべてうまくいきます。問題は、これがビルドジョブの完了を妨げることです。そのため、バッチスクリプトは終了しますが、workerprocess.exeサブプロセスが原因で、サービス(Bamboo)は終了したことを認識していません。workerprocess.exeを待ちます(そして、workerprocess.exeからの出力を表示します)。
私はドキュメントで起動コマンドを調べましたが、自分のやりたいことを何も見ることができません。私は この質問 を見ましたが、それも実際には役に立ちませんでした-サービスはまだプロセスが完了するのを待っています。
だから私は要約すると推測します:バッチスクリプトから新しいプロセスを実行して、プロセスが完全に切り離され、そのバッチスクリプトが完了するのを待っているものを保持しないようにするにはどうすればよいですか? 。
試しましたか 隠しスタート(HSTART) ? (費用$ 20)
私は個人的に、ウィンドウを非表示にして1時間ごとのバッチジョブを実行するために使用しています。また、非同期で実行されるパラメーターとして(またはデフォルトでは、私が想定しているように)コマンドを順次実行できることにも言及しています。これがCPU、メモリ、ディスクの競合にどのように影響するかはわかりませんが、ソフトウェアには、アクションを実行する前にしばらく待機するオプションもあります。
リンクされたスクリプトはすべてダウンロードして、任意の名前で保存できます。
1)[〜#〜] iexpress [〜#〜]ソリューション-引数はコマンドとその引数のみを受け入れるため。
使用例:
call hidder.bat myBat.bat myexe.exe
call myexe.exe
2)[〜#〜] schtasks [〜#〜]-再び2つの引数のみを受け入れます-コマンドと引数昇格されたアクセス許可で起動されているかどうかもチェックし、可能であればWEVTUTILコマンドを使用してプロセスのPIDを取得します。
使用例:
call SCHPhidden.bat "cmd /c myBat.bat" "argument"
3)'WScript.Shell'-スクリプトは 'WScript.Shell'の完全なラッパーであり、可能なすべてのオプションはコマンドラインオプションで設定します。これはjscript/batchハイブリッドで、バットとして呼び出すことができます。
使用例(詳細については、「-h」を使用してヘルプを印刷してください):
call ShellRunJS.bat "notepad.exe" -style 0 -wait no
4)'Win32_ProcessStartup'-再び完全なラッパーとすべてのオプションにコマンドライン引数からアクセスできます。今回はWSF /です。いくつかのJscriptおよびいくつかのVBScriptのコードとのバッチハイブリッド-ただし、開始されたプロセスのPIDを返します。プロセスIDが非表示でない場合は、X/Y座標などのオプションを使用できます。
使用例(詳細については、「-h」を使用してヘルプを印刷してください)%path%
にない場合は、実行可能ファイル/スクリプトへの完全パスが必要です。
call win32process.bat "notepad" -arguments "/A openFile.txt" -showWindow 0 -title "notepad"
5)。NET solution。 ProcessStartInfoオプションのほとんどのオプションが使用されます(ただし、結局、すべてを含めるには疲れすぎました)。
使用例(詳細については、「-h」を使用してヘルプを印刷してください):
call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt" -style Hidden -directory "." -title "notepad" -priority Normal