Programming Field

Openfiles - DOS/Windows コマンド一覧

[Windows XP 以降] ローカルまたはリモートシステムで開かれている状態のファイルを表示、または切断しクローズします。

※ ローカルシステムに対する操作には管理者権限が必要です。

構文

openfiles[.exe] /Query [/S <remote-system> [/U <user-name> [/P [<password>]]]]
    [/FO <output-format>] [/NH] [/V]
openfiles[.exe] /Disconnect [/S <remote-system> [/U <user-name> [/P [<password>]]]]
    {/ID <id> | /A <access> | /O <mode>}
    [/OP <file-name>]
openfiles[.exe] /Local [ON | OFF]
共通オプション
/S <remote-system>
操作するコンピューター(ローカル/リモート)の名前を指定します。IPアドレスやホスト名を指定します。省略した場合はローカルコンピューターが対象になります。
/U <user-name> [/P [<password>]]
コンピューター名を指定した際のログイン名・パスワードを指定します。<user-name> にはドメイン名を指定することができます(「ドメイン名\ユーザー名」の形式です)。省略した場合は「net use」などで接続済みのユーザーが、使用されます。
パスワード指定は、「/P [<password>]」全体を省略した場合はパスワードなし、「/P」のみ指定して「<password>」を省略した場合はプロンプトを表示してユーザーにパスワード入力を促すようになります(このプロンプトでは入力されたパスワードが「*」で表示されます)。
/Query
開いているファイルの一覧を表示します。/S を指定しなかった場合でローカルで開いているファイルを追跡するためのフラグ「maintain objects list」が有効になっている場合は、ローカルで開いているファイルの一覧も表示されます。
/FO <output-format>
画面に出力する際の書式を指定します。指定できる値は以下の3種類です。/FO を省略した場合は「TABLE」になります。
指定する値意味
TABLE疑似的なテーブル表記で出力します。複数のプロセスを並べて見ることができますが、「/V」を指定した場合は横幅を多く使うため、既定のコマンドプロンプトの幅では表示が崩れる場合があります。
LISTファイルごとに箇条書きのような形式で情報を表示します。見やすさは向上しますが出力量が多くなる場合があります。なお、LISTを指定した場合は「/NH」オプションを使用することができません。
CSVCSV形式で出力します。Forコマンドに渡すなど、出力結果を解析したい場合に便利です。
/NH
TABLEやCSV形式で出力する際にヘッダーを出力しません。
/V
詳細情報を出力します。具体的には、通常ではリモートで開かれているファイルについては「ID」「アクセス(ユーザー)」「種類」「開いているファイル」が出力されますが、 /V を指定するとそれらに加えて「ホスト名」「ロック数」「オープン モード」が出力されます。
/Disconnect
リモートで開いているファイルを強制的に切断します。
/ID, /A, /O はいずれか必ず指定する必要があります(複数を組み合わせて指定することは可能です)。
※ ローカルで開いているファイルの切断を行うことはできません。
/ID <id>
開いているファイルのIDを指定します(1つのみ指定できます)。ID は /Query オプションで得られる一覧に記載されています。なお、「*」を指定するとすべてのファイルが対象になります。
/A <access>
開いているファイルのアクセス名を指定します(<access> に指定したアクセス名に一致するファイルすべてが切断されます)。アクセス名は通常はユーザー名です。なお、「*」を指定するとすべてのアクセス名が対象になります。
/O <mode>
開いているファイルのオープンモードを指定します。<mode> には「Read」「Write」「Read/Write」のいずれかを指定します。なお、「*」を指定するとすべてのモードが対象になります。
/OP <file-name>
開いているファイルのパス名を指定します(このパス名は通常対象のコンピューター上のパス名になっています)。パス名が完全に一致するもののみが切断対象になります。なお、「*」を指定するとすべてのファイルが対象になります。
/Local [ON | OFF]
ローカルで開いているファイルを追跡するためのフラグ「maintain objects list」の有効・無効を設定します。ON にすると Openfiles にてローカルで開いているファイルの一覧を表示することができるようになりますが、システムのパフォーマンスが若干低下する可能性があります。設定変更はシステムの再起動後に有効になります。
ON / OFF を指定せずに「openfiles /local」と実行した場合は、現在の設定状況を出力します。

解説

Openfiles を使うことで、ネットワーク越しに共有しているファイルをどのユーザーが開いているかを確認したり、メンテナンスやトラブルシューティングなどの目的で開いている状態を強制的に切断する(閉じる)ことができます。(「openfiles /local on」などによって)「maintain objects list」を有効にすることで、ローカルアプリケーションが開いているローカルファイルの状況も確認することができます(切断はできません)。

なお、ローカルシステムに対する操作は管理者権限が必要ですが、リモートシステムを対象とする(/S を利用する)場合は、/U オプションでユーザーを指定することでそのユーザーが持つ権限を利用するため、必ずしも管理者権限を持ったセッションで Openfiles を実行する必要はありません。

サンプル1

openfiles /query /v

ローカルシステム上でネットワーク共有しているファイルのオープン状況を詳細表示で出力します。

サンプル2

openfiles /disconnect /s myserver /u LogOperator /p /id * /op "Y:\Logs\access_log"

「myserver」上にある「Y:\Logs\access_log」を開いているすべての接続を切断します。閉じたいファイルが決まっており、そのファイル名のリモートシステム上でのパス名がわかっている場合は、「/id *」を指定したうえで /OP オプションを使うことで切断したいファイルを絞ることができます。

なお、このコマンドラインでは「LogOperator」ユーザーでログインして操作を行います。その際のパスワードはプロンプトが表示されるためプロンプト上で入力します。