図1 C:\Windows\WindowsUpdate.logを消したいと思ってもそのままではエラーとなる
図1 C:\Windows\WindowsUpdate.logを消したいと思ってもそのままではエラーとなる
[画像のクリックで拡大表示]
図2 C:\Windows\WindowsUpdate.logを利用しているプログラムを一覧表示した画面
図2 C:\Windows\WindowsUpdate.logを利用しているプログラムを一覧表示した画面
[画像のクリックで拡大表示]

openfiles /query | findstr -i "ファイル名"

 ローカル・コンピュータ上のファイルやフォルダを削除しようとしてもエラーが出て削除できないことがあります。代表的なものは,ファイルやフォルダがプログラムによって開いた状態になっている場合です。例えば,自動更新プログラムのログであるC:\Windows\WindowsUpdate.logを消したいと思っても,そのままでは移動や削除ができません(図1)。

 実際に,どのプログラムがファイルを開いているかどうかは,openfilesコマンドで確認することができます。そのためには,まず最初に「openfiles /local on」というコマンドを実行し,ローカルのファイルについてハンドルを追跡可能な状態になるよう設定しておきます。この設定を有効にするには再起動が必要です。再起動が完了したら,以下のようなコマンドを入力します(図2)。

openfiles /query | findstr -i "windowsupdate.log"

 こうするとローカルのマシン上で該当するファイルを開いているプログラムが表示されて,状況が確認できます。その後,タスク・マネージャやtaskkillコマンドなどから,該当するプログラムを終了させれば,ファイルの削除や変更ができるようになります。ただし,この方法でプログラムが開いているファイルを確認できるのは,自身のアカウント権限で開いているものだけですので,システム・アカウントなどで開かれたファイルの確認には利用できません。