Windows
TIPS
[System Environments] |
ディスク・デフラグをスケジュール実行する(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」というファイル名でディスクに保存する。以後はこのファイルをマウスでダブルクリックすれば実行できる。またタスク・スケジューラ([スタート]メニュー-[プログラム]-[アクセサリ]-[システム
ツール]-[タスク])と組み合わせれば、スケジュールに応じた無人実行も可能になる。
Windows Server Insider フォーラム 新着記事
Windows Server Insider 記事ランキング
本日
月間