270


例えば、SassやCoffeeScriptのファイル保存時のコンパイルなどを想定していますが、できるだけ特定の実行環境(Nodeとか)に依存せず、導入が簡単なものが望ましいです。  
OSデフォルトの機能だけで実現できればそれが一番よいです。

WindowsのバージョンはVista(Server
2008)以降を想定しています。特定のバージョンのみで動作する場合には、その旨記載していただければ有難いです。


CC BY-SA 3.0
2014-12-02T12:07:42.150
260
2014-12-02T17:40:14.670
645
question
windows
Windowsでファイルの変更を監視して何かタスクを実行したい


SassやCoffeeScriptのwatchやコンパイルを行えるWindows対応のソフトだと、以下等があります。  
<https://prepros.io/>  
<http://koala-app.com/>  
OSバージョンの対応状況まではわかりませんが、最近のOSであれば問題なく動くと思います。

単純に、ファイル変更を監視して何かしたいのであれば、汎用なファイル変更検知ソフトもあります。  
<http://www.forest.impress.co.jp/library/software/folderkanshi/>  
この手のソフトの場合、変更検知時に好きなコマンドを実行できるタイプが好ましいのではないでしょうか。batファイルの実行もできますので。


CC BY-SA 3.0
2014-12-02T13:17:56.120
262
2014-12-02T13:17:56.120
589
260
answer


確認まではしていませんが、Vista 以降でしたら`System.IO.FileSystemWatcher`を
powershellから使えるかもしれません。 参考までに同期処理だと以下の様になります。 （ WaitForChanged 中は ctrl-C
で止まらないので、ウィンドウを閉じるか、ctrl-cを押したのち、監視対象のファイルなどの変更を行ってください ）

実際には非同期処理の方がいいかと思います。

[code]

    $w = New-Object System.IO.FileSystemWatcher
    $w.Path = "c:\\path\\to\\dir"
    $w.Filter = "*.*"
    $w.NotifyFilter = [System.IO.NotifyFilters]::LastWrite
    
    while(1){
    
      $changeResult = $w.WaitForChanged([System.IO.WatcherChangeTypes]::All)
      # $changeResult.TimeOut が trueなら、タイムアウト
    
      # 好みのコマンドを実行する。
      .\run_something.bat  $changeResult.Name
    
    }
    
[/code]


CC BY-SA 3.0
2014-12-02T17:40:14.670
270
2014-12-02T17:40:14.670
728
260
answer