消せないファイルを削除する

 

WindowsはNT以後、それまでとは違う、新しいファイル・システムを採用しました。

このファイルシステム(NTFS)は便利な機能もたくさんあるのですが、その一方で、従来にはなかった「消せないファイル(フォルダ)」を作ってしまうことがあります。

┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏

用語:NTFS

NT File System。Windows NT/2000/XPで使われるファイルシステム。
NTFSは複数ユーザがアクセスするサーバでの運用を念頭において設計されて
いるため、MS-DOSやWindows 95などのFAT/FAT32ファイルシステムにはない、
アカウントごとのアクセス権設定機能を持つ。

┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏┏



本日はそうしたファイルへの対処法を説明します。




■ 「ファイルが使用中です」というエラーメッセージが出る場合

ファイルを削除したり、移動、更新しようとしても、何らかの理由でアクセスが拒否されることがあります。

原因のほとんどは、そのファイルを“誰か”がオープンしていたり、ロックしていて、移動や削除、変更などができないからです。

だが、実際にだれがファイルを使用しているのかが分からないことも多い。特に、自分1人しか使っていないはずのマシンなのに、そして何もアプリケーションを起動していないはずなのに、どうしてもファイルを操作できない場合には、その原因を特定するのは困難です。

多分、何らかのサービスかバックグラウンドで動作しているアプリケーションが、それらのファイルをオープンしているからだろうと推測はできるが、どのプログラムやサービスであるかを判断するのは非常に面倒です。

いちいちサービスを停止したりしなければならないが、実際には停止できないようなサービスも多いからです。


◆ セーフモードで立ち上げて削除する

セーフモードに入るには以下の手順で行ないます。

  1.XPを再起動します。
  2.起動画面でXPのロゴがでているときにF8キーを押します。
  3.ブートモードの選択画面が出ます。
  4.選択肢の中からセーフモードを選んで、リターンキーを押す。
  5.XPが最低限のドライバを組み込んだ状態で起動します。
   これがセーフモードです。

※セーフモードでは画面モードが640×480となりますが、これは正常な動作です。

以上の方法を試してもなお、「ファイルが使用中です」というエラーメッセージが出る場合、下記の文献を参照して、ファイル共有を手動で閉じたのちに削除を試みてください。



このような場合には、どのプロセスがどのファイルを使用しているかを知ることができるとありがたいでしょう。

プロセス名が分かればそのプログラムだけを停止させるなどの対処ができるし、削除してはいけないファイルであるかどうかなども分かるからです。

少なくとも、一時フォルダ中に作成されたファイルはむやみに何でも消してもよいというわけではなく、現在実行中のサービスやプロセスがオープンしているファイルはそのままにしておかなければなりません。

これらの判断を行うためにも、現在オープンされているファイルの一覧を知るのは、非常に重要です。

Windows XPやWindows Server 2003では、現在オープンされているファイルの一覧を知るためのコマンドとして、「openfiles.exe」というコマンドが用意されています。

単にopenfilesというコマンドを実行するだけでは、次のようなメッセージが表示されるだけです。

--------------(ここから)--------------------------------------

C:\>openfiles

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

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

---------------(ここまで)-------------------------------------

このメッセージ中にあるように、ローカルマシン上のファイルの情報を取得するためには、システムグローバルフラグ
(OSの動作状態を決めるためのパラメータの1つ)の「maintain objects list」をオンにし、ファイルの情報をトレースできるようにしておく必要があります。

グローバル・フラグの「maintain objects list」をオンにするためには、コマンド・プロンプト上で「openfiles /local on」を実行します。

--------------(ここから)--------------------------------------

C:\>openfiles /local on

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

---------------(ここまで)-------------------------------------

このとき表示されるメッセージに従ってシステムを再起動します。

1度再起動すると、あとはどのユーザーでログオンしても、ファイルの情報を取得することができるようになります。

ただしデフォルトでこのフラグがオフになっているのは、オンにすると(トレースのオーバーヘッドのために)システムのパフォーマンスが低下する可能性があるからです。

パフォーマンスを優先するなら、必要なときだけオンにするのがよいでしょう。

以上のような準備を行った後で、単にopenfilesというコマンドを実行すると、現在ローカル・マシン上でオープンされているファイル(やフォルダ)の一覧と、リモートから共有(使用)されているファイル(やフォルダ)の一覧が表示されます。


◆ ツールで削除する方法

一発で削除できるのが「Unlocker」というツールです。他の問題の解決にも同じツールが出てきますので、あとでまとめて説明します。




■ 「ファイルの削除エラー」などというエラーメッセージが出る場合

以下の方法を順に試してみて下さい。

◆ コマンドプロンプトで削除(1つ目の方法)

1.スタートメニューからプログラム→アクセサリ→コマンドプロンプトを実行。

2.プロンプト(「>]マーク)の直後に「cd \」と入れて、リターンキーを押す。
 (これは呪文のようなものです。change directoryという意味です。必須)

3.次に同じく半角で「del」と入力し、そのあとに半角空白を入れる。(重要)

4.消したいファイルをエクスプローラからマウスでドラッグして、コマンドプロンプト画面の上に落とす。

5.すると、
 del \*****\*****\ファイル名
 または
 del "\*****\*****\ファイル名"
     ↑ パスに空白が含まれる場合、引用符で自動的に囲まれます

 と表示されるので、リターンキーを押す。

【注意】フォルダの場合は delの代わりに「rd /s」と入力してください。
    (以下同様)


◆ ファイルシステムを修復(2つ目の方法)

削除できない理由として、ハードディスクのファイルシステムに問題が生じていることが考えられます。

以下の手順でファイルシステムを修復した後に、削除を試みてください。

1.マイコンピュータを開く。

2.問題のファイルがあるドライブで右クリック。

3.メニューで「プロパティ」を選択。

4.「ツール」タブを開いて、エラーチェックのボタンを押す。

5.Windowが開くので2つのオプションをともに選択して、開始ボタンを押す。

※選択したドライブがシステムドライブの場合、再起動後、チェックディスクが行なわれます。


◆ 別のファイルで上書き(3つ目の方法)

ファイルの中には、それが壊れているために削除できないものがあります。

その場合、同名のファイル(名前さえ同じなら、中身は何でもいい)を作って上書きすることで問題が解決できます。

1.スタートメニュー→アクセサリからメモ帳を起動する。

2.ファイル→「名前を付けて保存」を選択。ダイアログボックスが開く。

3.ファイルの種類を「全てのファイル」にする。

4.保存先を、消したいファイルがあるフォルダにする。

5.ファイル一覧から、消したいファイルを選択。

6. 「保存」ボタンを押す

7.「上書きしますか?」と聞いてくるので、OKを押す。

作業はこれで終了です。あとは普通に削除できます。


◆ ツールで削除する方法(4つ目の方法)

一発で削除できるのが「Unlocker」というツールです。他の問題の解決にも同じツールが出てきますので、あとでまとめて説明します。




■ 「ファイルを削除できません。送り側のファイルまたはディスクから読み取れません」
  というメッセージが出る場合

※ファイル名の末尾が空白やピリオド、あるいはCON、PRN、AUX、LPTx、COMx(xは数字)といった名称の場合もここに含まれます。


◆ コマンドプロンプトで削除

(a)ファイル名の最後に空白やピリオドが含まれている場合

Zipファイルなどの圧縮ファイルから解凍した場合、Windowsの文法に適合しない、異常な形式の名前を持ったファイルやフォルダが生成される場合があります。

代表的なものとしては、名前の末尾に空白やピリオドが付いている例があげられます。

このような場合、通常の削除処理を行なっても、Windowsは末尾の空白やピリオドを無視してファイルを探そうとするので、「ファイルが見つかりません」といったエラーメッセージが帰ってきてしまいます。

こうしたケースの場合、以下の方法でファイルやフォルダを指定することで削除が可能になります。

コマンドプロンプトで
 del "\\?\<ドライブ名>:\*****\*****\ファイル名"
 rd /s "\\?\<ドライブ名>:\*****\*****\フォルダ名"
と入力して、リターンキーを押す。

例:
del "\\?\C:\Documents and Settings\デスクトップ\trouble.file."     ファイル名末尾にピリオドの例

rd /s "\\?\C:\Documents and Settings\デスクトップ\TroubleFolder "   末尾に空白がある例

この場合、消したいファイル名やフォルダ名全体をかならず引用符(")で囲むこと。ピリオドや空白を削除しないよう注意してください。


(b)ファイル名がCON、PRN、AUX、LPTx、COMxなどの場合

CON、PRN、AUX、LPTx、COMxなど、システムで予約された名前(予約語)が付けられたファイルも消すことができません。

その場合も、まずは上記「※ファイル名の最後に空白やピリオドが含まれている場合」の方法を使ってみてください。

しかし、それでもうまく行かない場合は、下記の方法を使うと消せる可能性があります。

コマンドプロンプトで
 del "\\.\<ドライブ名>:\*****\*****\ファイル名"
 rd /s "\\.\<ドライブ名>:\*****\*****\フォルダ名"
と入力して、リターンキーを押す。

例:
del "\\.\C:\Documents and Settings\デスクトップ\CON"
rd /s "\\.\C:\Documents and Settings\デスクトップ\PRN"


◆ ツールで削除する方法

一発で削除できるのが「Unlocker」というツールです。お待たせしました。
ここで説明します。

「Unlocker」は下記のリンクからダウンロードできます。

http://ccollomb.free.fr/unlocker/

作者サイトの真ん中あたり(一覧表の下)
Download the latest version for Windows 2000 / XP / 2003 - Unlocker is Freeware
というところから最新版をダウンロードしてください。

  

「Unlocker」は、フォルダの右クリックメニューから現在ロックされているファイルのリストを表示して、リストから選択したファイルのロック状態を解除できるソフトです。

共有ファイルを緊急で操作したいときや、ファイル削除時にロックされている場合などは、本ソフトで解除することによりファイル操作ができるようになります。

操作は、まずフォルダの右クリックメニューから[Unlock]を選択すると、現在ロックされているファイルの名前やプロセスID、プロセスパスなどが別ウィンドウ内に一覧表示されます。

あとは、一覧からファイルロックを解除したい実行ファイルを選択して、ウィンドウ右下の[Unlock]ボタンを押すと、ファイルロックを解除することが可能です。

なお、本ソフト上で任意ファイルのロックを解除すると、そのファイルを読み込んでいるソフトが強制終了してしまうことがあります。

場合によってはWindowsの動作が不安定になる可能性もあるので、自己責任で利用してください。




■ 「アクセス拒否されました」 というエラーメッセージが出る場合、サイズ 0 のファイルの場合

WinRARなどでZipファイル、Rarファイルを解凍した際に、アクセスできないファイルやファイルサイズが0のファイルが作られるという報告があります。

こうしたファイルやフォルダをクリックして開こうとすると「アクセス拒否されました」というメッセージが出ます。

また、ファイルを削除しようとすると「ディスクがいっぱいでないか、書き込み禁止になっていないか、またはファイルが使用中でないか確認してください」というエラーメッセージが出てしまいます。

こうしたファイルやフォルダは、ファイルやフォルダの所有権を取り戻してから削除してください。

アクセス許可のないファイルまたはフォルダにアクセスする必要がある場合、そのファイルまたはフォルダの所有権が必要です。

所有権を取得する際、アクセスできるようにセキュリティ アクセス許可を置き換えます。


◆ フォルダの所有権を取得する方法

Microsoft Windows XP Home Edition を実行している場合は、コンピュータをセーフ モードで起動し、[セキュリティ] タブにアクセスできる管理者権限を持つアカウントでログオンしてください。

Windows XP Professional を使用している場合は、簡易ファイルの共有を無効にします。

ドメインに参加していない Windows XP Professional では、デフォルトで簡易ファイルの共有が使用されています。

フォルダの所有権を取得するには、次の手順を実行します。

1. 所有権を取得するフォルダを右クリックし、[プロパティ] をクリックします。

2. [セキュリティ] タブをクリックし、セキュリティ警告のメッセージが表示された場合は
  [OK] をクリックします。

3. [詳細設定] をクリックし、[所有者] タブをクリックします。

4. [名前] ボックスの一覧で自分のユーザー名をクリックします。

 管理者としてログオンしている場合は [Administrator] または [Administrators] グループです。

 対象フォルダに含まれるファイルやフォルダの所有権を取得する場合は、
 [サブコンテナとオブジェクトの所有者を置き換える] チェックボックスをオンにします。

5. [OK] をクリックし、次のメッセージが表示されたら [はい] をクリックします。

 ディレクトリ folder name の内容を読み取るのに必要なアクセス許可がありません。
 ディレクトリのアクセス許可を変更して、フルコントロールで利用できるようにしますか?

 [はい] をクリックすると、すべてのアクセス許可が変更されます。

 注 : folder name は、所有権を取得するフォルダの名前です。

6. [OK] をクリックします。対象フォルダとそのフォルダに含まれるファイルやフォルダに対し、
 アクセス許可とセキュリティ設定を適用し直します。


◆ ファイルの所有権を取得する方法

フォルダとファイルの違いは理解していますよね。

管理者権限のあるアカウントでコンピュータにログオンする必要があります。

ファイルの所有権を取得するには、次の手順を実行します。

1. 所有権を取得するファイルを右クリックし、[プロパティ] をクリックします。

2. [セキュリティ] タブをクリックし、セキュリティ警告のメッセージが表示された場合は
  [OK] をクリックします。

3. [詳細設定] をクリックし、[所有者] タブをクリックします。

4. [名前] ボックスの一覧で、[Administrator] または [Administrators] グループをクリックし、
 [OK] をクリックします。

 これで Administrator または Administrators グループにファイルの所有権が与えられます。

 このフォルダ内のフォルダとファイルへのアクセス許可を変更する場合は、
 続いて手順 5. 以降も実行します。

5. [追加] をクリックします。

6. [選択するオブジェクト名を入力してください(例)] ボックスに、ファイルへのアクセス許可を与えようとしている
 ユーザーアカウントまたはグループ アカウント (Administrator など) を入力します。

7. [OK] をクリックします。

8. [グループ名またはユーザー名] ボックスの一覧のアカウントをクリックし、そのユーザーに割り当てる
 アクセス許可のチェックボックスをオンにします。

9. アクセス許可の割り当てが終了したら [OK] をクリックします。


【注意】
Windows XP Professionalの場合、あらかじめ、エクスプローラーの「ツール」→「フォルダオプション」→「表示」タブ→「簡易ファイルの共有を使用する」のチェックを外してOKボタンを押して、「セキュリティタブ」が表示されるようにする必要があります。

またMicrosoft Windows XP Home Editionの場合は、セーフモードで実行してください。そうでないと「セキュリティタブ」が出てきません。




■ エクスプローラが落ちる/フリーズするので、ファイルにアクセスすらできない場合

WindowsXPでは、動画ファイル(avi/wmv形式)が入っているフォルダを開こうとすると、エクスプローラがフリーズしたり、あるいは落ちてしまう現象がしばしば起きます。

これはXPのエクスプローラが画像ファイルや動画ファイルの情報を「先読み」する機能を持っているために起きる現象です。

このため、たくさんの動画ファイルを一つのフォルダに入れていたり、あるいは形式が正しくない動画ファイルをフォルダに入れていたりすると、エクスプローラが対応しきれず、フリーズ/異常終了したりするのです。

エクスプローラの「先読み機能」をオフにすれば、この状態は解決できます。


◆ エクスプローラの先読み機能をオフにするには

自分自身でレジストリをいじくる方法もありますが、ここではフリーソフトの使用を推薦します。

「Win高速化 PC+」
http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005831.html

「Win高速化 PC+」は、あなたのWindowsをカンタンに高速化してくれる、初心者にやさしいユーティリティソフトです。

高速化したい項目をチェックして、「高速化設定」ボタンを押すだけで、Windowsを高速化できます。

設定変更が不安な初心者向けに、高速化する項目の詳しい説明を、[詳しい解説]に表示します。

このツールを使って、エクスプローラの下記の項目を設定してください。
 [7] 動画ファイルの移動・削除やファイル名変更、フォルダを開く際のストレスをなくす

これによって、エクスプローラがハングしたり、落ちることは避けられるはずです。




■ とても長い名前のファイルが削除できない

Windows2000やXPが導入しているファイルシステムでは半角255文字までのファイル名が扱えるとされています。

しかしながら、ファイルシステムのほうは大丈夫でもアプリケーションがそうした長いファイル名を扱えるかどうかは別問題です。

フォルダ名+ファイル名(=パス)が一定以上の長さになってしまうと、アプリケーションのほうが対応できずに落ちてしまったり、不具合を起こしてしまいます。

こうした現象はエクスプローラでも例外ではありません。

長いパスを持ったファイルはエクスプローラで削除することができないばかりか、そのファイル名をマウスで選択しただけでエクスプローラが落ちてしまいます。

従って、いったんこんな現象が起きるとファイル名を短くすることすらできなくなります。

この場合、対応策は2つあります。


◆ フォルダの名前を短くする

ファイル名を短くするのではなく、そのファイルが入っているフォルダ名を短くすることです。(半角1文字推奨)

そうすることによってパスの長さが短くなり、エクスプローラが正常に動くようになるはずです。

もし、問題のファイルが入っているフォルダが、サブフォルダになっている場合、フォルダ名を短くしたあと、そのフォルダをドライブのルート直下に移動してください。そうしないと削除できない場合があります。


◆ 8.3形式で削除する方法

フォルダ名をどうしても変えたくない/システムフォルダのために変えられないという場合は、コマンドプロンプトから消してください。

ただし、この場合、ちょっとしたテクニックが必要です。

Windowsのファイルシステムでは、それぞれのファイルは255文字までの「ロングファイルネーム」と同時に、DOS時代から使われている、<8.3形式>と呼ばれている短いファイル名を持っています。

その短いファイル名を使って削除するのがポイントです。

例)Dドライブの「困ったファイル置き場」という名前のフォルダにある「寿限無寿限無、五劫のすりきれ、海砂利水魚の水行末、雲来末、風来末、食う寝るところに住むところ、やぶらこうじのぶらこうじ、パイポパイポ、パイポのシューリンガン、シューリンガンのグーリンダイ.txt」というファイルを削除したい。

1.スタートメニュー→アクセサリ→コマンドプロンプトを開く。

2.問題のファイルがあるドライブをカレントドライブにする。
  例 Dドライブにファイルがある場合
  C:\>D:
  D:\>    ←こうなればOK

3.問題のファイルがあるディレクトリ(フォルダ)をカレントディレクトリにする。
  例
  D:\>cd \困ったファイルの置き場 ←フォルダ名の前に「\」(半角の円マーク)を入れる
  D:\困ったファイルの置き場>   ←こうなればOK

4.dir /x で<8.3形式>のファイル名を確認する。

  ↓こんな感じの表示が出るはずです

  D:\困ったファイルの置き場>dir /x
  ドライブ D のボリューム ラベルは DATA です
  ボリューム シリアル番号は 6039-**** です

  D:\困ったファイルの置き場 のディレクトリ

  2004/10/01 00:42 <DIR> .
  2004/10/01 00:42 <DIR> ..
  2004/09/30 19:10 1,469,222 寿限無~1.txt 寿限無寿限無、五劫のすりきれ、海砂利水魚の水行末、
  雲来末、風来末、食う寝るところに住むところ、やぶらこうじのぶらこうじ、
  パイポパイポ、パイポのシューリンガン、シューリンガンのグーリンダイ.txt

  上の例だと「寿限無~1.txt」←これが8.3形式のファイル名ということになります。

5.↑の操作で分かったファイル名で削除。
  例
  D:\困ったファイルの置き場>del 寿限無~1.txt


◆ ツールで削除する方法

この場合は「Unlocker」ではなく、別のツールを使います。

エクスプローラでは削除することができない、長いファイル名を持つファイルを削除するためのツールが開発されています。

その名もずばり「長削君」。

http://www.mapper64.com/4U/

作者サイトの中央に近いあたりにダウンロードできるリンクが張ってありますが、「長削君」は文字が短くて目立ちにくいので、ゆっくりスクロールして見つけてください。

  


■ 注意

削除後のファイルやフォルダの復活は不可能です。
利用には細心の注意をして、自己責任で行なってください。




本日はこれにて終了です。