卒業研究に使うための環境を研究室内のサーバーを使って構築したけれど、自動テスト&ビルド環境を整える際にちょっとした面倒ごとがあった。
俺は毎日深夜0時にSVNリポジトリからソースを取り出し、テストし、パッケージにまとめ、実行までの作業を自動でしたかった。サーバーはwindows 2003。なら、上記の処理をすべてバッチファイルにまとめてatコマンドで実行しようと考えた。ところがこれが何故かうまくいかない。
どうやらatコマンドを使ってバッチファイルを呼び出した場合、内部コマンド(delやら copyやら)が動作しないらしい。動作させるためにはバッチファイルの中を
cmd.exe << input.txt
という風にして、input.txtに本来バッチファイルで実行したかった内容を書けばよいらしい。
ところがである。そのようにすると今度はatからバッチファイルが全く呼び出されないようになってしまったのだ。理由はよく分からない・・・。
さて、切羽詰ったな。といったところでatに代わるコマンドが何かないかと探してみると、「schtasks」という似たようなコマンドがあるではないか。これはもしかしたら使えるかも、と試してみたら見事にバッチファイルは実行され、自分の意図したとおりの動作をしてくれた。
結論 schtasksいいね。