あさりのみそしるダイアリー

非常事態が日常です…そんな時こそ声を上げないと人生ジエンドにゃん(´・ω・`)

FileWatcherManager Ver.1.05aをリリースしました!

Ver.1.04aの公開からほとんど時間をおいていませんが、「FileWatcherManager」に機能追加と不具合修正をしました。

ちなみに「FileWatcherManager」は、指定したフォルダを監視して、変更があれば指定したコマンドを実行します。
フォルダの指定などは、すべて専用のスクリプトで行います。

ごく普通のフォルダ監視ソフトでは、やりたいことが高度になるにつれて、要件を満たさない場合が多くなります。

簡単かつスマートで、画面が煩雑にならず、かつ高度な条件でフォルダ監視およびタスクの実行を行う・・・ということをできるのが、FileWatcherManagerです。

簡単なスクリプトを書くだけで、フォルダの監視をしたり、多様な後処理をしたりすることができ、応用すればネットワークの監視もできます。

もし、スクリプトを書くことに抵抗がなければ、FileWatcherManagerはきっと、やりたいことができる最高のフォルダ監視ツールになると思います。


○ FileWatcherManager Ver.1.00bをリリースしました! ( ソフトウェア ) - あさりのみそしるダイアリー - Yahoo!ブログ


変更内容は以下のとおり。

[1.05a (2017/08/17)]
・機能追加
- マクロに"setval", "getval", "calc"を追加

・機能変更
- メッセージボックスおよび通知のタイトル欄に、FileWatcher名を表示するようにしました
- マクロ"filename_contains", "file_contains"を廃止しました
 ※今後は、str_containsマクロと組み合わせてご使用ください
- ifコマンドを1つのFileWatcherに複数定義できるようになりました



今回追加されたマクロなどは、以下のとおり。


・マクロ
  条件やコマンドの指定には、マクロを使用できます。
  マクロを使うことで、より多様な条件の評価やコマンドの実行を行うことができます。
  ※ただし、一部条件下を除き、use-macroがfalseのとき、マクロは実行されません。
  
  マクロは、行中の文字列の置換機能です。
  決まった書式で書かれた文字列を、ファイル名や数値などと置き換えます。

  マクロは、マクロ名の両側を「$」で囲って使用します。
  使用可能なマクロは、以下のとおり。

  calc
    指定した計算式を評価し、評価した結果と置き換えます。
    複雑な計算式は評価できません。
    書式:
      $calc(計算式)$
    結果:
      # $calc(100*100-1) としたとき
      9999

  getval
    指定した名前に設定されている値と置き換えます。
    値が設定されていない場合は、マクロごと消えます。
    書式:
      $getval(名前)$
    結果:
      # $getval(test) とし、testに「sample」という値が設定されているとき
      sample

  setval
    指定した名前に、任意の値を設定し、設定した値と置き換えます。
    書式:
      $setval(名前,設定する値)$
    結果:
      # $setval(test,sample) とし、名前「test」に値「sample」を設定したとき
      sample





今回の変更により、if文を1つのfilewatcherに複数指定できるようになったため、orにあたる条件分岐ができるようになりました。

また、任意の値を保存して、使いまわせるようになったため、毎回プロセスを実行して結果を得るようなことをしなくて済むようになります。

たとえば、この前のサンプルスクリプトを以下のように書き換えることができます。


# groupも使用可能ですが、Ver.1.04からfilewatcherでFileWatcherを定義します
filewatcher check_router
  set ignore-events-when-do-command true
  # 監視フォルダ内のファイル変更による条件判定とコマンド実行を無効化します
  set watchdir-enabled false
  # アプリの実行ファイルのみをファイル検索対象とします
  # 必ず1つだけ存在し、かつ他のファイル変更を無視します
  # 1回だけコマンドを実行したい場合にも有効です
  set file-search-filter $currentproc$
  # サブフォルダは検索対象にしないでください
  set watch-subdir false
  # 監視対象フォルダは、アプリが現在示しているフォルダとします
  watch dir
    $currentdir$
  # 60秒ごとに1回実行します
  watch interval
    60
  # do nothing は、何もしないコマンドですが、マクロの評価は行うので、この性質を利用
  do noting
    # pingの実行結果をping_resultに保存します
    $setval(ping_result,$exec(ping 192.168.10.1)$)$

  # ファイルプロパティを参照するわけではありませんが、現状は定型文なので…
  if file.property
    # pingの実行結果が0(=IPアドレスに到達した)場合…
    $getval(ping_result)$ == 0
  then
    # ログにアクセス状態を記録します
    do log
      ルーターにアクセスできる状態です
  if file.property
    # pingの実行結果が1だった場合…
    $getval(ping_result)$ == 1
  then
    do log
      pingの実行結果が①でした
  else
    do log
      pingの実行結果が、0でも1でもなく、$getval(ping_result)$でした
end-filewatcher


このような形で、プロセスの実行結果によって、if文で条件分岐することができます。


さて、次のバージョン(Ver.1.10a)で短期的にはバージョンアップは最後になると思います。
不具合や要望などがあれば別ですが・・・

1.複数のスクリプトを1つのFileWatcherManagerで管理できるようにする
2.スクリプト置換マクロの実装
3.スクリプト挿入マクロの実装





おわり。