サーバーに作成している共有フォルダ内のファイルを定期的に最新化するバッチが、別のユーザーに開かれていて失敗することがあります。
こんな時は、以下の方法で開きっぱなしのファイルを切断することができます。
- サーバーのコンピューターの管理から切断する
- openfilesコマンドで現在開いているファイルを確認し切断
サーバーのコンピューターの管理から切断する
一番オーソドックスな方法は、サーバーにリモートデスクトップで接続して、[コンピューターの管理]-[共有フォルダ]-「開いているファイル]から切断する。これが一番簡単に切断する方法です。

openfilesコマンドで現在開いているファイルを確認し切断
基本は上記方法で切断してしまえばいいのですが、手動でではなく、バッチを実行する前に開かれていたら、切断しておきたい場合があると思います。こんな時はopenfilesコマンドを実行して切断します。以下はC:¥test\共有\test.txtという共有ファイルを接続しているユーザーすべてを切断する際のコマンドです。これをファイルコピーする処理の前などでバッチで仕込んでおけば、ファイル操作する前にファイルが開かれていたら強制的に切断することが可能です。
OPENFILES /Disconnect /A * /OP "C:\test\共有\test.txt"
OPENFILES /Disconnectのオプション
/ID | IDを指定して切断 |
/A | ユーザー名を指定して切断 |
/O | オープンモードで開いているファイルをすべて切断する |
/OP | 特定の開いているファイルを指定して切断する。 |
ただし、/OP オプションは、/ID or /Aを指定する必要がある。
その他
- ローカルファイルは切断できない。共有フォルダのみ切断可能
- 開かれているファイルを表示できるのは、openfilesを実行しているサーバにネットワーク接続している場合のも表示される。
- 開かれているファイルの一覧を抽出する場合は
openfiles /query | findstr <ファイル名>
- 上記コマンドは開かれているファイルが存在した場合はリターンコード:0 存在しなければ1が返ってくる。
- openfiles/query/vで一覧出力。
OPENFILES /parameter [引数]
説明:
システム上の開いているファイルとフォルダーを管理者が
切断できるようにします。
パラメーターの一覧:
/Disconnect 1 つ以上の開いているファイルを切断します。
/Query ローカルまたは共有フォルダーで開いているファイルを表示
します。
/Local ローカルで開いているファイルの表示を有効/無効にします。
/? このヘルプのメッセージを表示します。
例:
OPENFILES /Disconnect /?
OPENFILES /Query /?
OPENFILES /Local /?
ファイルを自動で切断するバッチ
rem 指定したファイルが開かれている場合は強制的に切断する openfiles /query | findstr "C:\test\共有\test.txt" if %ERRORLEVEL%==0 ( OPENFILES /Disconnect /A * /OP "C:\test\共有\test.txt" )
コメント