web-dev-qa-db-ja.com

Windows 10で破損したフォルダーを削除できない

今日、WinRARを使用して.apkファイルを逆コンパイルしようとすると、エラーが発生し、解凍が終了しました。その後、フォルダを削除しようとすると、管理者権限を提供しているにもかかわらず、フォルダの所有権がないというエラーが発生します。

Error shown while deleting the folder

Image from file Explorer of the folder which has a file

画像内のファイルとその親フォルダーの両方を削除しようとすると、エラーが発生します。

次に、コマンドを使用して管理者モードでcmdを使用して同じことを試みました:

rm -dテスト

出力:: rm: `test 'のリンクを解除できません:所有者ではありません

また、次のコマンドを実行して、フォルダー内のファイルを再帰的に削除しました。

rm -rテスト

出力:rm:警告:循環ディレクトリ構造。これはほぼ間違いなく、ファイルシステムが破損していることを意味します。システムマネージャーに通知します。次の2つのディレクトリのiノード番号は同じです。

テスト `test/'

だから私は再帰的なファイル構造を削除するために次のコマンドを試しました、

rm -rfdテスト

出力:rm: `test 'のリンクを解除できません:所有者ではありません

私が使用した上記のメソッドはすべてStackOverflowまたはMicrosoft QnAページからのものですが、何も機能しないようです。

セーフモードでも試してみました。それでも、同じエラーが発生します。 2回、エラーコード0x80070091のエラーも発生しました

Image showing permissions in the security tab of properties window of the folder to be deleted

Takeownコマンドを使用してフォルダの所有権を取得しようとしました。

takeown/fテスト/ r

出力:

成功:ファイル(またはフォルダー): "C:\ Users\mandar\Desktop\test"がユーザー "MANDAR_SADYE\mandar"によって所有されています。

成功:ファイル(またはフォルダー): "C:\ Users\mandar\Desktop\test \"は現在、ユーザー "MANDAR_SADYE\mandar"が所有しています。

私は見つけることができるすべての可能な解決策を試しましたが、何もうまくいかないようです。誰かがこの問題に関して何か提案がある場合は、適切と思われるように回答またはコメントとして投稿してください。前もって感謝します。

5
Mandar Sadye

試行錯誤を繰り返した結果、削除する方法を見つけました。 harrymc's solution を試す前に解決策を見つけたので、彼の解決策が機能するかどうかを確認できませんでした。私が行った方法は簡単ではないので、まず彼のソリューションを試してみて、それが機能するかどうかを知らせて、許容できる回答としてマークできるようにすることを強くお勧めします。

したがって、私が従った方法は、別のファイルシステムでフォルダーを開くことです。

  • 私がした方法は、起動可能なLinuxペンドライブを介して削除することでした(Kaliを使用しましたが、他のディストリビューションも問題なく動作するはずです)。
  • Linuxで仮想ボックスまたはVMware仮想マシンにフォルダーを共有することで削除してみて、削除してみることができます。
  • 3番目の方法は、ローカルネットワークでフォルダーを共有し、Androidまたはネットワークに接続されたMACデバイスから削除することです(Android LinuxカーネルとMACにはUnixがあるため、どちらも機能するはずです)

したがって、問題はWindows NTFSファイルシステムにあると思います。 3番目の方法を除いてわかるように、ほとんどの人が持っていないブート可能または仮想マシンの形でセカンダリOSを探す必要があります。したがって、3番目のソリューションを試してください。それが機能しない場合は、 harrymcのソリューション を試してください。それでもうまくいかない場合は、仮想マシンをインストールするか、起動可能なペンドライブを作成して削除してみてください。

0
Mandar Sadye

問題は、スペースのみを含む名前のファイルシステムエントリがあることです(test\、バックスラッシュの後のスペースに注意してください)。これは技術的にはNTFSで可能ですが、Win32ではまったく許可されておらず、ほとんどのWindows APIでは正常に処理されません。彼らはファイル名の末尾からスペースを取り除こうとし、ファイル名がもう存在しない場合は非常に混乱し、ディレクトリを参照しているかのように扱う場合があります。これは、test\*" "などの形式を使用している場合でも発生します。

これをWindows自体で行うには2つの方法があります。

  1. Win32パス変換をバイパスします。これは、完全修飾パスの前に\\?\を付けることによって行われます。これを行うと、有効なファイル名についてのすべてのWin32ルール(「スペースで開始または終了できない」など)がオフになり、より限定的なNTFSルールのセットのみが残ります(\または:など)。また、相対パスの使用などの便利な省略形もオフになることに注意してください。これを行う場合は、絶対パス(C:\ Users\mandar\Desktop\test \)を指定する必要があります。引用符で囲む必要があります。これにより、コマンドラインで、最終スペースを含めるつもりであることがわかります:del "\\?\C:\Users\mandar\Desktop\test\ " (そうです、これにはcmd.exeを使用する必要があります。Powershellは\?\を無視し、MinGWまたはCygwinを介してWindowsで実行されているUnix風のシェルは、カーネルが期待する形式のパスを使用しません)。
  2. WindowsのネイティブLinuxサブシステムを使用します(これは、特別なドライバーを介して、NTカーネル上で変更されていないLinuxバイナリを直接実行します)。 Linux(ご存じのとおり)は、LinuxのWindowsサブシステムであるWSLのように、ばかげた名前のファイルの処理をサポートしています。以前にWSLを使用したことがない場合は、WindowsアプリストアからいくつかのLinuxディストリビューションをインストールする必要があります( bunt および OpenSUSE はどちらも使用可能であり、一般的な使用に適しています。 Kali は、Windowsボックスに特別な目的のディストリビューションが必要な場合にも使用できます。必要に応じて複数インストールすることもできます)。 WSLディストリビューションのbash(または他のシェル)内から、関連するディレクトリ(cd /mnt/c/Users/mandar/Desktop/test)に移動し、問題のファイル(rm ' ')または単にディレクトリ全体を削除します。
5
CBHacking

コマンド chkdsk を実行して、エラーが検出されるかどうかを確認します。

エラーをさらに理解するために、 Windows 10のイベントビューアーでChkdskログを読み取る を行うことができます。

エラーが見つかり、威嚇的ではないか、エラーが多すぎる場合は、エラーを修正するために次のコマンドを実行します。

chkdsk /f

開始する前に、ファイルの適切なバックアップがあることを確認してください。

0
harrymc