
■ 状況
あるフォルダにファイルが保存された時に、そのファイルに対して何らかの処理を実行する。
ファイルが保存されるのは、7:00 〜 0:00 の間に不定期に保存される。処理を実行するサーバーは、6:30に再起動するが、それ以外の時間帯は常に稼働している。
という条件で動作する処理を作る必要が生じました。さて、どうしようか?
■ サンプル
特別な環境を用意する程のこともないので、powerShellで実現してみようと思います。
必要な処理は、無限ループと待機処理ですかね。
# 無限ループです。
# 強制終了されるまで、永遠に処理を繰り返します。
while(1) {
# メッセージを表示します。
Write-Output ('日時:' + (Get-Date -format yyyyMMdd_HHmmss))
# 30秒待機します。
Start-Sleep -Seconds 30
}
※ メインの処理は後で作るとして、ここでは代わりにWrite-Outputを実行させておきます。
■ 解説
1.無限ループ
無限ループは、while文で実現します。
while文は、条件が真(True)である間は処理を繰り返します。
そして、powerShellでは0は偽(False)を表し、0以外は真(True)を表します。
なので、サンプルのように条件に1を指定すると、真(True)ということになり、無限ループが実現できます。
これは、C言語あたりと同じ仕様ですかね。
ちなみに、「 while($True) 」というように、boolean値を直接指定しても動きます。
2.待機処理
連続実行させるのも良くないので、30秒のインターバルを置いて処理を実行します。
powerShellの待機処理は、Start-Sleepコマンドレットで実現できます。
オプション -Seconds で待機する秒数を指定できます。
■ 実行
実行結果は、下記のようになりました。
ログの時間を見る限り、30秒の待機処理が機能していることが分りますね。

投稿記事の一覧:http://harikofu.web.fc2.com/
--- blog end ---
スポンサードリンク


