D.

先行ジョブの実行を待つ。(解決編)

昨日の先行ジョブの実行を待つ。のコメントで setlock なるツールを教えてもらった。しかしプラットフォームに依存しない (すなわち Windows 等でも汎用的に使える) 手法が欲しかったので結局 ruby でコマンドを自作した。

class Wait
end

class << Wait
  def lock
    lock = true
    while lock
      if FileTest.exist?(LOCKFILE)
        sleep INTERVAL
      else
        lock = false
      end
    end
  end
end

if __FILE__ == $0
  LOCKFILE=ARGV.shift || '.lock'
  interval=ARGV.shift || 1; INTERVAL=interval.to_i
  Wait.lock
end

https://github.com/id774/scripts/blob/master/waitlock.rb


先行ジョブの実行中に C:\tmp\jobname.txt 等を作っておいて、後続のジョブでは ruby waitlock.rb C:\tmp\jobname.txt 60 とすれば 60 秒間隔で先行ジョブの終了を待つことができる。