TwitterクライアントJanetterはメモリ食いでメモリ消費が2GBに上ることがある。このため定期的に再起動する必要があるという。これを自動化する。自動化のためにバッチファイル、VBS、タスクスケジューラを使った。

再起動用のバッチファイル

まず、メモリ使用量に応じて再起動させるバッチファイルを作成する。テキストエディタで次のように記述する。XP Pro、Vista以降で使えるコマンドを使っているのでXP Homeでは動かない。(tasklist,taskkill)

@echo off
rem 終了させるプログラムの名前(拡張子は付けない)
set AppName=Janetter
rem 終了させるプログラムのフォルダ
set AppFolder=C:\Program Files (x86)\Janetter\bin
rem 終了させるメモリ使用量(kB)
set MaxMemUsage=300000

rem プログラムが起動しているかチェック
tasklist /fi "memusage ge %MaxMemUsage%" | find /i "%AppName%"

rem 起動していない場合、処理を終了
if errorlevel 1 goto end

:kill
rem プログラムを終了させる
rem タスクトレイにアイコンが残るので/fオプションは使用しない
taskkill /im %AppName%.exe

rem 終了確認
tasklist | find /i “%AppName%”
rem 終了していない場合、再度実行
if not errorlevel 1 goto kill

rem プログラムを起動する
cd %AppFolder%
start %AppName%.exe

:end

テキストエディタで上のスクリプトを記述し、変数の値を環境に合わせて変更する。

通常、Janetter.exeのあるフォルダは

  • 64bitOSの場合 "C:\Program Files (x86)\Janetter\bin"
  • 32bitOSの場合 "C:\Program Files\Janetter\bin"

となる。

拡張子をbatにして保存する。

追記(2011/7/21):挙動が怪しいのでJanetterServ.exeの終了も待つように変更

表示制御用スクリプト

次に、実行時にウィンドウを表示させないようにVBSで表示制御用スクリプトを作成する。

CreateObject("WScript.Shell").Run WScript.Arguments(0),WScript.Arguments(1)

テキストエディタでこの1行を記述し、拡張子をvbsにして保存する。第一引数でスクリプトのパス、第二引数でウィンドウの形式を指定する。ウィンドウの形式はWshShellのRunメソッドのもの。0で非表示、6で最小化の状態で実行できる。

タスクスケジューラに登録

  1. タスクスケジューラを開く

    task_make_01

  2. 基本タスクの作成をクリック

    task_make_02

  3. 適当な名前を付ける

    task_make_03

  4. トリガーを「ログオン時」にする

    task_make_04

  5. 操作は「プログラムの開始」を選択

    task_make_05

  6. 「プログラム/スクリプト」に作成した表示制御用スクリプトを指定する

    task_make_06

  7. 「引数の追加」に再起動用バッチファイルとウインドウの形式(0=非表示)をスペースで区切って指定する

    task_make_07

  8. 内容を確認して、ダイアログを開くにチェックを入れ、「完了」をクリック

    task_make_08

  9. プロパティが開くので「トリガー」タブをクリックする
  10. すでに作成されているトリガーを「編集」する
  11. 「繰り返し間隔」にチェックを入れ、Janetterを監視する間隔を指定する。「継続時間」には「無期限」を指定。

    task_make_09

  12. すぐに有効になるようにトリガーをもう一つ作成しておく
  13. 「新規」をクリック
  14. タスクの開始条件に「タスクの作成/変更時」を指定する

    task_make_10

  15. 先のトリガー同様に繰り返し間隔を指定する
  16. OKをクリックしてダイアログをすべて閉じる

これでjanetterが自動的に再起動するようになった。

参考

Run メソッド/MSDN ライブラリ

5月 23rd, 2011

Posted In: ソフトウェア

タグ: , ,

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください