WindowsのフォルダI/O監視

投稿者: | 1月 31, 2024

前回Linuxのinotifywaitのことを書いたので、今回はWindows版。ブログをさくさく書いていて、「実はお暇」なのではと言われたりするが、ほとんどが過去のメモを書き直しているだけ。なので完全に余計なお世話だなぁwそういうことを言う人限ってアウトプットがほとんどないんだが。まぁ、暇といえば、今年はでっかく暇をとる予定。未だにオカンを偲ぶことが全くできないので、先が見えれば、少なくとも2、3ヶ月はお暇が欲しい。

 

閑話休題

 

 .NET の FileSystemWatcher クラスを使えば、Windowsでもフォルダ監視ができる。特段、何も必要はない。

https://learn.microsoft.com/ja-jp/dotnet/api/system.io.filesystemwatcher?view=net-8.0

世の中にPowerShellスクリプトが転がっている。

 

ここでは、Windowsでinotifywaitを作って、使ってみる。FileSystemWatcherを利用しているので世の中のPowerShellとできることの違いはない。単にLinux版とコマンドラインオプションが同じなだけ。

inotifywaitのコンパイルにCygwinが必要だと言われているが、実はいらないらしい。.Net Framework 4.xが入っていれば簡単にできる。

ちなみに、以下がデフォルトでインストールされている、あるいは、インストールされている、.Net Framework のバージョン一覧。

https://learn.microsoft.com/ja-jp/dotnet/framework/migration-guide/versions-and-dependencies

 

必要な環境

Windows x64環境に.Net Framework 4.xが入っていること

https://dotnet.microsoft.com/ja-jp/download/dotnet-framework

 

.Net Framework 4のインストール確認

dir c:\Windows\Microsoft.NET\Framework64

ここでは、Windows Server 2022を利用(デフォルトで.net framework 4.8がインストールされている。)

 

必要なファイル

https://github.com/thekid/inotify-win から https://github.com/thekid/inotify-win/archive/refs/heads/master.zip を落としておく

ZIPファイルを解凍したら、そのディレクトリに移動する。

 

コンパイル

以下を実行。すぐ終わる。

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /t:exe /out:inotifywait.exe src\*.cs

inotifywait.exeがカレントディレクトリに生成されているはず。

 

利用方法

以下に書いてあって、Linuxのinotifywaitとだいたい同じ。

https://github.com/thekid/inotify-win?tab=readme-ov-file#usage

 

ただし、以下の違いに注意

  • 検知できるイベントが、create, modify, delete, moveで、FileSystemWatcherのデータなのでLinuxよりだいぶ少ない。
  • デーモン起動やファイル出力ができない。

 

実行例

inotifywait --monitor --recursive --format "%T %w %f %e" C:\Windows\Temp

まぁ、使い方がLinuxと同じなのと、監視先がコマンドラインで指定できるので便利

コメントを残す