openfilesコマンドで開いているファイルを確認する方法 /query・/local設定・戻し方まで解説

「ファイルが使用中で開けない」「誰が共有フォルダのExcelを開いているか知りたい」というとき、Windowsで最短なのが openfiles コマンドです。共有フォルダ経由で開いているファイルは openfiles /query で確認でき、同じPCやサーバー上でローカルに開いているファイルまで追いたい場合は、先に openfiles /local on を設定して再起動する必要があります。しかも、この設定は再起動後に反映され、不要になったら openfiles /local off で元に戻せます。この記事では、最短手順、つまずきやすい点、切断の判断基準、代替策まで迷わず使える形で整理します。(Microsoft Learn)

目次

openfilesコマンドでまず押さえる結論

openfiles は Windows 10 / 11 と Windows Server で使える標準コマンドです。開かれているファイルやディレクトリの照会、共有フォルダ経由の切断、ローカル ファイル ハンドル追跡のオン・オフができます。まずは「共有フォルダの開きっぱなしを見たいのか」「ローカルで開いているファイルまで見たいのか」を切り分けると迷いません。(Microsoft Learn)

状況最初に実行するコマンド判断ポイント
共有フォルダの開きっぱなしを見たいopenfiles /query /fo tableまずは一覧で確認
詳細を見たいopenfiles /query /fo list /v詳細表示で追う
結果を保存したいopenfiles /query /fo csv > C:\temp\openfiles.csvExcelで並べ替えしやすい
ローカルで開いているファイルも見たいopenfiles /local on → 再起動 → openfiles /query /fo list /v初回設定が必要
調査後に戻したいopenfiles /local off → 再起動追跡を止める

openfiles /query の出力形式は TABLE LIST CSV から選べ、/v で詳細表示、/nh で見出し省略ができます。/local は現在の状態確認、オン、オフの切り替えに使います。(Microsoft Learn)

openfilesコマンドで開いているファイルを確認する基本手順

共有フォルダ経由なら、まず openfiles /query

最初は管理者権限で開いたコマンド プロンプトや Windows Terminal から、次のコマンドを実行します。

openfiles /query

一覧が見づらければ、画面確認は LIST + /v、後で絞り込みたいなら CSV が実用的です。(Microsoft Learn)

openfiles /query /fo list /v
openfiles /query /fo csv > C:\temp\openfiles.csv

現場では、まず TABLE で全体を見る、対象が多いときは CSV に落としてファイル名やユーザー名で探す、という流れが最も迷いません。保存先フォルダは事前に作っておくと手戻りがありません。

別のサーバーをリモートで確認する

ファイルサーバーが別マシンなら /s で対象サーバーを指定します。必要なら /u で別資格情報を使えます。/s にはサーバー名または IP アドレスを指定し、先頭に \\ は付けません。(Microsoft Learn)

openfiles /query /s FILESERVER01 /u CONTOSO\AdminUser

パスワードをコマンドラインに平文で残したくないなら、/p は付けずに実行してください。Microsoft Learn の例でも、/p を省略すればパスワード入力が促され、画面にエコーされない方法が案内されています。(Microsoft Learn)

ローカルで開いているファイルを見たいなら openfiles /local on

ここが最もつまずきやすいポイントです。openfiles /local はローカル ファイル ハンドル追跡の状態を表示し、既定では無効です。ローカルで開いているファイルも追いたい場合は、先に有効化してから再起動する必要があります。(Microsoft Learn)

openfiles /local
openfiles /local on

/local on を実行した直後には、まだ結果は変わりません。設定変更は再起動後に有効になるため、再起動してから改めて照会します。(Microsoft Learn)

openfiles /query /fo list /v

ローカルの Excel、Access、業務アプリが同一サーバー上でファイルをつかんでいるか確認したいのに、openfiles /query で何も出てこない場合は、この「/local on を入れたが再起動していない」パターンをまず疑うのが近道です。

失敗しやすいポイントと対処

症状原因対処
共有ファイルは見えるのに、ローカルで開いているファイルが出ないローカル追跡が無効openfiles /local on を実行し、再起動
/local on を入れたのに結果が変わらないまだ再起動していない再起動後に openfiles /query を再実行
一覧が読みにくい出力形式が合っていないLIST /v または CSV を使う
コマンド履歴にパスワードを残したくない/p で平文指定している/p を省略してプロンプト入力
どのアプリがファイルを握っているか分からないopenfiles はファイル一覧向きで、プロセス特定は得意ではない後述の Handle や Process Explorer を使う

特に多いのは、/local on を実行しただけで満足してしまい、再起動していないケースです。また、リモート接続時のパスワードは /p を省略すれば画面に表示されない入力にできます。プロセス名まで掘りたい場合は、Microsoft Sysinternals の Handle や GUI 版の Process Explorer の方が向いています。(Microsoft Learn)

開いているファイルを見つけたあと、切断してよいかの判断基準

openfiles には /disconnect があり、共有フォルダ経由でリモートに開かれているファイルやフォルダを、ID・ユーザー名・アクセスモード・ファイル名で切断できます。まず openfiles /query で ID を確認し、その後で対象だけ切るのが基本です。(Microsoft Learn)

openfiles /query /fo list /v
openfiles /disconnect /id 26843578

/disconnect は「共有フォルダ経由で開かれているもの」を切るための機能です。ローカル アプリがそのPCやサーバー上で保持しているファイル ハンドルを閉じる用途には向きません。ユーザー単位やパス単位でも切れますが、誤って広く切断しないためにも、まずは ID 指定が無難です。(Microsoft Learn)

強制的に切断する前に、必ず利用者へ保存確認を取りましょう。Microsoft は SMB の Close-SmbOpenFile について、変更がまだ書き戻されていない状態で閉じるとデータ損失の可能性があると明記しています。openfiles /disconnect も実務上は同じく「強制的に閉じる」操作なので、安易に一括切断しない運用が安全です。(Microsoft Learn)

openfilesが向いていないケースの代替策

openfiles は標準機能で便利ですが、用途によっては別の道具の方が速くて正確です。特に SMB 共有の詳細確認と、ローカル プロセスの特定は、別ツールの方が情報量が多いことがあります。

やりたいこと向いている手段理由
SMB共有で、クライアント名・ユーザー名・ロック数まで見たいGet-SmbOpenFilePath ClientComputerName ClientUserName Locks などを取得できる
SMB共有のファイルを PowerShell で閉じたいClose-SmbOpenFileFileId や SessionId 単位で閉じられる
ローカルでどのプロセスがファイルを握っているか知りたいHandle または Process Explorerプロセスごとの open handle を確認しやすい

Get-SmbOpenFile は SMB サーバーのクライアント側から開かれているファイル情報を返し、例として Path ShareRelativePath ClientComputerName ClientUserName Locks などを確認できます。反対に、どのプログラムがそのファイルやディレクトリを開いているかを知りたいなら Handle が向いています。Handle は管理者権限が必要で、ハンドルを閉じる機能もありますが、Microsoft はその操作がアプリケーションやシステムの不安定化につながる可能性があると警告しています。まずは特定用途で使うのが安全です。(Microsoft Learn)

調査が終わったら openfiles /local off で戻す

一時的な調査のためにローカル追跡を有効化したなら、終わったあとに無効化しておくと運用がすっきりします。Maintain Objects List を有効にするとシステム速度が低下する可能性があるため、常時オンにする理由がない環境では戻しておく方が無難です。無効化も再起動後に反映されます。(Microsoft Learn)

openfiles /local off

迷ったら、この順番で進めれば大きく外さない

  1. 共有フォルダのロック確認なら、まず openfiles /query /fo list /v
  2. ローカル利用も疑うなら、openfiles /local on を設定して再起動
  3. どの端末・どのユーザー・ロック数まで見たいなら Get-SmbOpenFile
  4. どのプロセスが握っているか知りたいなら Handle または Process Explorer
  5. 調査が終わったら openfiles /local off と再起動で戻す

この順番なら、openfilesコマンドで開いているファイルを確認するところから、うまく表示されない場合の見直し、必要に応じた代替策、最後の戻し方まで一通りカバーできます。最初の一手はシンプルで、共有フォルダなら openfiles /query、ローカルまで見るなら openfiles /local on と再起動です。(Microsoft Learn)

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次