フォルダを監視して、動きがあったときに処理をするというスクリプトを作りたかったので調べていたところ、.NET APIの中にちょうどいいものがありました。
[Microsoft Learn]
これはPowershellから呼び出すことができ、特定フォルダ内のファイルの作成や削除・変更などに応じてイベントを発生させることができます。実際にテストで作ってみたのが以下のスクリプトです。
<Powershell>
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\hogehoge" # 監視フォルダ
$watcher.Filter = "*.*" # 拡張子はここで指定する
$watcher.EnableRaisingEvents = $true
Register-ObjectEvent $watcher Created -Action {
$path = $Event.SourceEventArgs.FullPath
$time = Get-Date -Format "yyyy/MM/dd HH:mm:ss"
Write-Host "[$time] ファイル作成: $path"
}
Write-Host "$path を監視中です。Ctrl+Cで終了"
while ($true) { Start-Sleep 1 }
実行するとコンソールが開きっぱなしになり、対象のフォルダに何かファイルが作られるとコンソールにメッセージを表示して教えてくれます。見せ方はもうちょっとスマートにできそうな気はするものの、構造の骨子はこれでよさそうな感じです。
