ablog

不器用で落着きのない技術者のメモ

ほかの人またはプログラムによって使用されています

Windows を使っていると、

ファイルまたはフォルダの削除エラー
... を削除できません。ほかの人またはプログラムによって使用されています。
ファイルを使用している可能性があるプログラムをすべて閉じてから、やり直してください。

と怒られることがある。単にフォルダやファイルを開いているときは閉じれば解決するのだが、すべてのファイルやフォルダを使用しているプログラを終了しても怒られることがある。
ぐぐってみると、
オープンしているファイルを調査する:Tech TIPS - @IT
ふむふむ。openfiles というのが使えるらしい。

C:\>openfiles

情報: ローカルで開いているファイルを表示するには、システム グローバル フラグ 'maintain objects list' を有効にしてください。詳細については Openfiles /? を参照してください。


ローカルの共有ポイントをとおしてリモートで開いているファイル:
---------------------------------------------
情報: 開いている共有ファイルが見つかりませんでした。

ローカルで開いているファイルを表示したいので、

>openfiles /local on

成功: システム グローバル フラグ 'maintain objects list' は有効になりました。
      システムを再起動すると、変更が有効になります。

で、Windows を再起動する。

>openfiles
...
772   chrome.exe           C:\..\Chrome\User Data\Default\Cache\data_5
776   chrome.exe           C:\..\Chrome\User Data\Default\Cache\data_5
...

なんかずらずら表示される。

>openfiles /disconnect /ID 772

などとして、強制的にファイルをクローズすることができる。
詳しい使い方は以下の通り。

>openfiles /disconnect /?

OPENFILES /Disconnect [/S システム [/U ユーザー名 [/P [パスワード]]]]
                      {[/ID id] [/A アクセス] [/O オープンモード]}
                      [/OP 開いているファイル]

説明:
    共有フォルダをとおしてリモートで開かれたファイルとフォルダを管理者が
    切断できるようにします。

パラメータの一覧:
    /S     システム             接続先のリモート システムを指定します。

    /U     [ドメイン\]ユーザー  コマンドを実行するユーザー コンテキスト
                                を指定します。

    /P     [パスワード]         与えられたユーザー コンテキストのパスワードを
                                指定します。省略された場合は入力を求めます。

    /ID    開いているファイルの ID
                                ファイルの ID で開いているファイルの切断を
                                指定します。
                                "*" ワイルドカードを使用できます。

    /A     ユーザー名           "アクセス" 値で開いているファイルをす
                                べて切断するように指定します。
                                "*" ワイルドカードを使用できます。

    /O     オープンモード       "オープンモード" 値で開いているファイルを
                                すべて切断するように指定します。有効な値は
                                Read、Write、Read/Write です。
                                "*" ワイルドカードを使用できます。

    /OP    開いているファイル   特定の "開いているファイル" 名で作成された
                                開いているファイル接続をすべて切断するよう
                                に指定します。"*" ワイルドカードを使用できます。

    /?                          ヘルプまたは使用法を表示します。

例:
    OPENFILES /Disconnect /?
    OPENFILES /Disconnect /ID 1
    OPENFILES /Disconnect /A  ユーザー名
    OPENFILES /Disconnect /O Read/Write
    OPENFILES /Disconnect /OP "c:\My Documents\somedoc.doc" /ID 234
    OPENFILES /Disconnect /S システム  /U ユーザー名 /ID 5
    OPENFILES /Disconnect /S システム  /U ユーザー名 /P パスワード /ID *