Windowsで現在開かれているファイルを表示・切断する
openfiles コマンドでファイルを開いているプロセスを調べる
Windowsにおいてファイルを編集したり削除しようとした場合、他のプロセスが開いていて編集・削除できないことがある。
このような場合、ファイルを開いているプロセス(アプリケーションやサービスなど)を終了させてからファイルを編集・削除する必要があるが、openfiles コマンドを利用すればその調査をすることができる。
1.設定方法
openfiles コマンド が機能するには事前に以下の設定、及び設定後の再起動が必要となる。
1 2 3 | C:\>openfiles /local on 成功: システム グローバル フラグ 'maintain objects list' は有効になりました。 システムを再起動すると、変更が有効になります。 |
※ネットワーク経由で他のユーザが開いているローカルのファイル(ローカルサーバの共有を使用して他のユーザが開いているファイル)一覧は “openfiles /local on”の設定をしなくても一覧表示可能。
→openfiles /query /v で出力される。
2.一覧表示
現在開かれているファイルの一覧を表示するには以下のコマンドを実行する。
1 | C:\>openfiles /query /v |
以下例では test.txtを開いているプロセスを表示している。
ローカルファイルと共有ファイル(ネットワーク経由で他のサーバ開く)で結果が異なる。
(1)ローカルファイルの場合
1 2 | C:\>openfiles /query /v | findstr test.txt 408 Administrator 1340 Hidemaru.exe C:\temp\test.txt |
※秀丸の「ファイルの排他制御」「読み書き禁止」でファイルを排他的に開いた場合。
(2)共有ファイルの場合(openfilesを実行しているサーバに対して、ネットワーク経由で他のユーザが開いているファイル)
1 2 | C:\>openfiles /query | findstr test.txt 210 administrator Windows C:\temp\test.txt |
※openfiles コマンドはリモートコンピュータ上の情報を見ることも可能。
1 | openfiles /query /s <ipアドレス> /u <ユーザ名> /p <パスワード> |
3.切断方法(強制クローズ)
・ローカルファイルの場合
ローカルで開いているファイルは切断(強制クローズ)できない。ファイルを開いているアプリケーションを終了させる必要がある。(不明なプロセスがファイルを開いて削除できない場合などの強制ファイルクローズは不可)
・共有ファイルの場合
openfilesを実行しているサーバに対して、ネットワーク経由で他のユーザが開いているファイルは切断(強制クローズ)が可能。
以下の例ではネットワーク経由で開かれている test.txtを強制切断しています。
1 2 | C:\>openfiles /query | findstr test.txt 210 administrator Windows C:\temp\test.txt |
上記ファイルはネットワーク経由でadministratorが共有を使用して test.txtを開いている。
1 2 | C:\>openfiles /Disconnect /ID 210 成功: 開いているファイル "C:\temp\test.txt" への接続は切断されました。 |
1 2 | C:\>openfiles /query | findstr test.txt (結果無し) |
※ファイルを排他無しで開いている場合は開いているファイル一覧には表示されない。
例として、秀丸の「ファイルの排他制御」が「しない」の場合、結果の一覧に表示されない。「ファイルの排他制御」が「上書きだけ禁止」あるいは「読み書き禁止」の場合は表示される。
4.設定を戻す
・/local on の設定を行うと性能が悪化する。
従って設定が不要なら設定を戻すことを推奨する。
1 2 3 | C:\>openfiles /local off 成功: システム グローバル フラグ 'maintain objects list' は無効になりました。 システムを再起動すると、変更が有効になります。 |
5.オプションについて
openfiles /Query [オプション]
使用中の共有ファイルを表示する。
「/Query」に続けて指定できるオプションは以下の通り。
オプション 説明オプション 説明
/S 【コンピュータ名】 対象のコンピュータを指定する/S 【コンピュータ名】 対象のコンピュータを指定する
/U 【ユーザ名】 「/S」オプションと併用して、対象のコンピュータにログインするためのユーザ名を指定する/U 【ユーザ名】 「/S」オプションと併用して、対象のコンピュータにログインするためのユーザ名を指定する
/P 【パスワード】 「/S」「/U」オプションと併用して、対象のコンピュータにログインするためのパスワードを指定する/P 【パスワード】 「/S」「/U」オプションと併用して、対象のコンピュータにログインするためのパスワードを指定する
/FO 【出力形式】 結果の出力形式を指定する。「TABLE」「LIST」「CSV」の中から指定可能/FO 【出力形式】 結果の出力形式を指定する。「TABLE」「LIST」「CSV」の中から指定可能
/NH 結果の出力に項目名を含めない。「/FO TABLE」「/FO CSV」オプションと併用可能/NH 結果の出力に項目名を含めない。「/FO TABLE」「/FO CSV」オプションと併用可能
/V 詳細情報を表示する/V 詳細情報を表示する
/? ヘルプを表示する/? ヘルプを表示する
openfiles /Disconnect [オプション]
使用中の共有ファイルを「はい!使うの終わりね!」と切断する
「/Disconnect」に続けて指定できるオプションは以下の通り。
オプション 説明オプション 説明
/S 【コンピュータ名】 対象のコンピュータを指定する/S 【コンピュータ名】 対象のコンピュータを指定する
/U 【ユーザ名】 「/S」オプションと併用して、対象のコンピュータにログインするためのユーザ名を指定する/U 【ユーザ名】 「/S」オプションと併用して、対象のコンピュータにログインするためのユーザ名を指定する
/P 【パスワード】 「/S」「/U」オプションと併用して、対象のコンピュータにログインするためのパスワードを指定する/P 【パスワード】 「/S」「/U」オプションと併用して、対象のコンピュータにログインするためのパスワードを指定する
/ID 【ID】 項目「ID」が【ID】のファイルを切断する/ID 【ID】 項目「ID」が【ID】のファイルを切断する
/A 【アクセス】 項目「アクセス」が【アクセス】のファイルを切断する/A 【アクセス】 項目「アクセス」が【アクセス】のファイルを切断する
/O 【オープンモード】 項目「オープンモード」が【オープンモード】のファイルを切断する/O 【オープンモード】 項目「オープンモード」が【オープンモード】のファイルを切断する
/OP 【開いているファイル】 項目「開いているファイル」が【開いているファイル】のファイルを切断する/OP 【開いているファイル】 項目「開いているファイル」が【開いているファイル】のファイルを切断する
/? ヘルプを表示する/? ヘルプを表示する
openfiles /Local [オプション]
ローカルで開いているファイルの表示/非表示を切り替える
「/Local」に続けて指定できるオプションは以下の通り。
オプション未指定の場合、現在の状態が確認できる。
オプション 説明オプション 説明
ON ローカルで開いているファイルも表示するON ローカルで開いているファイルも表示する
OFF ローカルで開いているファイルは表示しないOFF ローカルで開いているファイルは表示しない
/? ヘルプを表示する/? ヘルプを表示する