Windowsでフォルダーの変更を監視し、変更がある場合はコマンドを実行する方法は?


32

LinuxMacについても同様の質問がありますが、ここではWindowsソリューションを探しています。

問題は次のとおりです:複数の(js)スクリプトファイルをフォルダーに書き込み、ファイルの変更と追加される新しいファイルをそのフォルダーで監視し、それが発生するたびにコマンドを実行する(すべてを1つにコンパイルする)単一ファイル)。

ソリューションには以下が必要です。

  1. フォルダー内のファイルの変更と追加される新しいファイルの両方を監視します。
  2. 変更がある場合にのみコマンドを実行します。

組み込みソリューション(JScriptまたはVBscriptスニペットなど)、またはインストールを必要としないもののいずれかが最適です。


Windows用のアプリについては、このブログをご覧ください。
ビジェイ14

回答:


3

このトリックを行う可能性のあるBelvedereというプログラムがあります。

http://ca.lifehacker.com/341950/belvedere-automates-your-self+cleaning-pc

バックグラウンドで実行されるスタンドアロンのWindowsアプリです。

1日前の最終更新日を持つ特定の拡張子を持つファイルのダウンロードフォルダーを監視するように設定しました。見つかったファイルは削除されますが、代わりにアクションを実行することもできます。


うわー-それはとても素敵に見えます。おそらく私が使用しているものよりも他の人(そしておそらく私も! 。+1して受け入れました!
カミロマーティン

2
Belvedereは、特にカスタムコマンドで、未解決のバグいっぱいであると最終的に理解するために時間を無駄にしました。代わりにFolderMonitorを試してください("{0}{1}"引用符を含むパラメーターフィールドで使用してください)。唯一の問題:フォルダーごとに個別のコマンドを定義することはできません。1つだけ、グローバルに。
fregante

@ bfred.it Belvedereには問題がありますが、うまくいきました。FolderMonitorも良い解決策のようです。私はそれが質問をしているユーザーが最後になったものだと思う。
dangowans

13

Log Monitorと呼ばれる古いプログラムで大成功を収めました。それは古代であり、ずっと前に放棄されました。しかし、それは目的をかなり果たしています。

http://www.freeware-guide.com/download/index2.html


1
ああ、ありがとう。現在、別のユーティリティを試していますが、+ 1です!
カミロマーティン

この恐ろしい「もの」はWindows 10で完全に機能しています。
-mbou​​llouz

7

この目的のためにシンプルなユーティリティを作成しました:https : //github.com/benblamey/when_changed

使用法:when_changed(ファイルパス)(コマンド)(オプションのパラメーター)

例when_changed C:\ somedir \ foo.txt myapp.exe bar wibble 123


エレガントなAPIが好きです。フォルダーを再帰的にサポートしていますか?
カミロマーティン

はい:when_changed C:\ **。txt foo.exe Windows用のgithub.com/joh/when-changedの no-depバージョンが必要でした。
ベン

6

.NETウォッチフォルダーでは、これは非常に簡単にコーディングできます。誰かがそのようなプログラムを行ったと確信しています。

ちょうどあなたのためにこの宝石を見つけました http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/


これを.NETでコーディングするのがどれほど簡単かはわかっています-したくありませんでした。しかし、私はこれを無料で試しいますが、うまくいくかもしれません!推奨事項の+1、その1つもいいようです。
カミロマーティン


2

これは非常に一般的な要件であるため、OS自体に便利なユーティリティが組み込まれていないことに驚いています。

とにかく先に述べたように、私は過去にLogMonitorを正常に使用しました。しかし、このブログ投稿は有益であることがわかり現在Watch 4フォルダーを使用しています。

これがお役に立てば幸いです。


+1、しかし、私たち開発者以外の誰にとっても「共通の要件」とは言いません...そして、そのことに関しては、ファイルシステムを監視するためのシステムコールがあります。
カミロマーティン14

1
まあ、私はビジネスとネットワーク共有の観点からそれを見ていました。ファイルがなくなったときに誰が責任を負うのかを常に知りたいのです:P 私は今、そのような状況を診断している最中です:/
Vijay


2

JScriptまたはVBScriptを使用して組み込みソリューションを実行する場合は、WMIイベントサブスクリプションを使用してファイルシステムを監視する必要があります。基本的に、フォルダーを監視し、次のような変更が検出されたときにアクションを実行するコードを記述します。

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

...そして、これらのイベントが発生するのを監視する間隔でスクリプトが実行されます。多くのリソースがありますが、VBScriptとPowershellのいくつかを以下に示します。


1

NirSoftには、Windows
FolderChangesViewで ファイルの変更を監視するためのソフトウェアがあります

FolderChangesViewは、選択したフォルダーまたはディスクドライブを監視し、フォルダーの監視中に変更、作成、または削除されているすべてのファイル名を一覧表示するシンプルなツールです。選択したフォルダに対する読み取り権限がある限り、FolderChangesViewを任意のローカルディスクドライブまたはリモートネットワーク共有で使用できます。

ここに画像の説明を入力してください

こちらから無料でダウンロードできます
詳細


自動化ツールよりも情報/デバッグツールの方が多いようですが、それでも興味深いものです。
カミロマーティン

0

OS固有のファイルシステム監視イベントにサブスクライブするhttp://jnotify.sourceforge.net/を使用できます。コードは何年も前ですが、まだ機能しています(少なくともWindows Server 2013r2では、昨日テストしていました)。

https://github.com/redbooth/jnotifyのjnotifyプロジェクトのgithub復活もあります。これはスタンドアロンのデモアプリを提供しませんが、(コミットログによると)いくつかのバグを修正します。

java7には、何らかのinotifyに似たファイルシステムウォッチも必要ですが、まだテストしていませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.