Windows TIPS
[System Environments]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

ディスク・デフラグをスケジュール実行する(Windows 2000編)

解説をスキップして操作方法を読む

デジタルアドバンテージ
2002/03/29
 
対象OS
Windows 2000 Professional
Windows 2000 Server
Windows 2000 Advanced Server
Windows 2000に付属するディスク・デフラグ・ツールには、スケジュール機能がない。
少々無理はあるが、WSHでスクリプトを作れば、スケジュール実行が可能になる。

  解説

 Windows 2000/Windows XPには、ハードディスクのフラグメント(断片化)を解消するためのディスク・デフラグ・ツールが標準で提供されている。これは米Executive Software社(国内販売は相栄電器)が開発したDiskeeperというディスク・デフラグ・ツールの機能制限版である。

 機能制限の詳細については別稿「Windows TIPS:ディスク・デフラグ・ツールの制限について」を参照されたい。別稿で解説しているとおり、大きな機能制限の1つは、スケジュール実行ができないことだ。ディスク・デフラグという処理の性格上、深夜に無人運転させたいと考えるユーザーが多いと思われるが、残念ながら通常の手段ではこれができない。


操作方法

WSHを利用すれば、スケジュール実行も不可能ではない

 ディスク・デフラグ・ツールの実体は、システム・ディレクトリの%SystemRoot%\system32\dfrg〜ファイル群である。デフラグ・ツールのランチャは、%SystemRoot%\system32\dfrg.mscというマネジメント・コンソール用のモジュールである。このファイルをマウスでダブルクリックすると、見慣れたウィンドウが表示される。ただしデフラグ処理を開始するには、デフラグ処理の開始ボタンをクリックするなど、マニュアルで指示を与えなければならない。

 少々無理はあるのだが、Windows環境での処理をスクリプトによって自動化可能にするWSH(Windows Script Host)を利用すれば、デフラグ・ツールの自動実行も不可能ではない。ここではその一例として、デフラグ・ツールを起動する最もシンプルなスクリプトをご紹介しよう。ただしこれはあくまで参考リストであり、イレギュラーな処理(エラー・ダイアログが表示されるなど)は一切考慮していない。

var WShell = WScript.CreateObject("WScript.Shell");
WShell.Run("%SystemRoot%\\system32\\dfrg.msc");
WShell.AppActivate("ディスク デフラグ ツール");
WScript.Sleep(2000);
WShell.Sendkeys("{TAB}{TAB}{TAB} ");

 なおこの例では、スクリプト言語としてJScriptを使用したが、Visual Basic Scriptを使っても同じことができる。コードから分かるとおり、スクリプトでは単に、%SystemRoot%\system32\dfrg.mscを起動し、Tabキーによるキー操作をシミュレートして、デフラグ・ツールのウィンドウにある[最適化]ボタンに入力フォーカスを移動し、このボタンを押しているだけである。エラー処理などは一切行っていないので、途中でメッセージ・ボックスなどが表示されると、処理は正しく開始されない。こうしたイレギュラーな処理にも対応した完全なスクリプトにしたければ、読者ご自身で発展させていただくことにしよう。

 このスクリプト・コマンドをメモ帳などのテキスト・エディタで編集し、拡張子を「js」(JScriptファイルの意味)として、例えば「mydefrag.js」というファイル名でディスクに保存する。以後はこのファイルをマウスでダブルクリックすれば実行できる。またタスク・スケジューラ([スタート]メニュー−[プログラム]−[アクセサリ]−[システム ツール]−[タスク])と組み合わせれば、スケジュールに応じた無人実行も可能になる。End of Article

関連記事(Windows Server Insider)
  Windows TIPS:ディスク・デフラグ・ツールの制限について
     
「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間