バッチファイルを開いたままにせずにバックグラウンドでプロセスを実行する方法


9

そのスクリプトのサブプロセス(ビルドジョブ)としてバッチファイルを実行するWindowsサービス(Bamboo統合サーバー)があります。そのバッチファイル内で、プロセスを開始し(workerprocess.exeと呼びましょう)、そのプロセスをバックグラウンドで実行できるようにしたいと考えています。これはすべて良いです、私は使用しました:

start "title" /B workerprocess.exe

それですべてうまくいきます。問題は、これがビルドジョブの完了を妨げることです。そのため、バッチスクリプトは終了しますが、workerprocess.exeサブプロセスのため、サービス(Bamboo)は終了したことを認識していません。workerprocess.exeを待ちます(そして、workerprocess.exeからの出力を表示します)。

起動コマンドのドキュメントを調べましたが、自分のやりたいことを何も実行できません。私はこの質問を見ましたが、それも実際には役に立ちませんでした-サービスはまだプロセスが完了するのを待つことになります。

つまり、要約すると、バッチスクリプトから新しいプロセスを実行して、プロセスを完全に切り離し、そのバッチスクリプトの完了を待機していることが発生しないようにするにはどうすればよいでしょうか。


1
同じコマンドウィンドウ内でプロセスを開始しないように、「/ B」パラメータなしで試したことがありますか?
Josh

@JoshR、それは状況を変えました。サービスはプロセスからの出力を受信しなくなりましたが、まだブロックされています。
ジャックスコット

回答:


2

隠しスタート(HSTART)を試しましたか?(コスト$ 20)

私は個人的に、ウィンドウを非表示にして1時間ごとのバッチジョブを実行するために使用しています。また、非同期で実行するパラメーターとして(またはデフォルトでは、私が想定しているように)コマンドを順次実行できることも述べています。これがCPU、メモリ、ディスクの競合にどのように影響するかはわかりませんが、ソフトウェアには、アクションを実行する前にしばらく待機するオプションもあります。


2013年9月に回答を書いたとき、製品はすべて無料でした。悲しいことに、彼らは価格を請求しています。

3

リンクされたスクリプトはすべてダウンロードして、任意の名前で保存できます。

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'-再び完全なラッパーとすべてのオプションにコマンドライン引数を介してアクセスできます。今回は、JSFとVBScriptのコードの一部とのWSF /バッチハイブリッドですが、開始されたプロセスのPIDを返します。プロセスIDの場合X / Y座標のようないくつかのオプションを使用できます。

使用例(詳細については、「-h」を使用してヘルプを印刷してください)%path%:にない場合、実行可能ファイル/スクリプトへの完全パスが必要になります。

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

5)。NETソリューション。ProcessStartInfoオプションのほとんどのオプションが使用されます(ただし、結局、すべてを含めるには疲れすぎました)。

使用例(詳細については、「-h」を使用してヘルプを印刷してください):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal

リンクが見つかりません
Rahil Wazir

@rahilwazir-編集済み。
npocmaka

1
私はこれらを少し試しました-私は細部がすごい取引を片付ける必要があると思います。最初のアプローチを単純に見てみましょう:IExpress、リンクはhidder.batへのリンクです。上の例は他の何かを使用しています。スクリプトを実行すると、上記に記載されていないEXEを要求するのに失敗しました。githubにマークダウンがあったとしても大丈夫かもしれませんが、ありません。最後に、それを実行するといくつかの.DDFファイルが生成されましたが、他には何も生成されませんでした...
JoeG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.