異なる時間に複数のスケジュールされたタスクを実行していて、それらすべてが共通の Windows バッチ ファイルを実行しているとします。このバッチ ファイルは、Java プログラムを実行します。
バッチ ファイルが、それを呼び出しているスケジュールされたタスクの名前を取得し、その名前をバッチが実行しているプログラムに渡すようにしたいと考えています。これどうやってするの?
異なる時間に複数のスケジュールされたタスクを実行していて、それらすべてが共通の Windows バッチ ファイルを実行しているとします。このバッチ ファイルは、Java プログラムを実行します。
バッチ ファイルが、それを呼び出しているスケジュールされたタスクの名前を取得し、その名前をバッチが実行しているプログラムに渡すようにしたいと考えています。これどうやってするの?
ジョーイが言ったように、外部からの助けなしにそれを行う方法はありません.
タスクごとにバッチの個別のインスタンスを作成し、それぞれに引数を使用して、実行するタスクを割り当てることができます。次のような小さなバッチを作成することもできます。
CALL mybatch.bat 1st_task
これにより、最初のタスクの名前が変数としてバッチに渡され%1
ます。
変数を使用して実行された時間に基づいてバッチを把握させることもできますが%time%
、これには、秒単位で同時に実行されることを常に保証できるとは限らないため、解析が必要です。
次のようになります。
if '%time:~0,5%'=='10:30' set var=1st_task
if '%time:~0,5%'=='12:00' set var=2nd_task
等々
(最後のものは、タスクが日中の指定された時間にのみ実行されることを前提としています...そして、何らかの理由で別の時間に実行される場合、これは機能しません)
スケジュールされたタスクの名前を引数としてバッチ ファイルに渡すことができます。外部からの助けがなければ、バッチの内部からそれを理解することはできません。