web-dev-qa-db-ja.com

名前がドット(「。」)で終わっているフォルダーを削除するにはどうすればよいですか?

名前がC:\a.\C:\b.\などのようにドットで終わっているマルウェアによって作成されたフォルダーがいくつかあります。

コマンドrd /q /s "C:\a.\"でそのようなフォルダーを削除できるソリューションを見つけましたが、win API RemoveDirectory を呼び出すと、ERROR_FILE_NOT_FOUNDを返します。

そして、私はちょうどそのようなディレクトリを削除する関数を書く方法を疑問に思います、ありがとう

私は自分のWindowsでテストしますXPこのようなSP3システム

フォルダーC:\>mkdir a..\\\を作成し、このフォルダーにアクセスするためにダブルクリックできません。コマンドrd /q /s "C:\a.\"で削除できます

rd /q /sコマンドが呼び出すWindowsシステムAPI

76
jerry.liu

この問題の解決策はこちら

rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
128
Skilldrick

Solution:RemoveDirectoryを呼び出すときは、必ずパスの前に文字列 "__)\\?\」。


説明:ドットに関連するすべてがあります。 MSDNによると、特にWin32名前空間でファイル名が無効な場合、NTFSボリューム上のファイルまたはフォルダーを削除できない場合があります(そのため、 Windowsエクスプローラーの通常の方法)。

ファイル名に無効な名前が含まれていると、ファイルを削除できない場合があります(たとえば、ファイル名の末尾にスペースまたはピリオドが付いている、ファイル名がスペースのみで構成されているなど)。この問題を解決するには、適切な内部構文を使用してファイルを削除するツールを使用します。これらのファイルを操作するために、いくつかのツールで「\\?\」構文を使用できます。例:
del "\\?\ c:\ path_to_file_thatには末尾のspace.txtが含まれます"
この問題の原因は原因4に似ています。ただし、通常のWin32構文を使用して、名前に末尾のスペースまたは末尾のピリオドを含むファイルを開くと、実際のファイルの前に末尾のスペースまたはピリオドが削除されます開かれます。したがって、「AFile.txt」と「AFile.txt」という名前の同じフォルダーに2つのファイルがある場合(ファイル名の後のスペースに注意してください)、標準のWin32呼び出しを使用して2番目のファイルを開こうとすると、代わりに最初のファイル。同様に、名前が ""(スペース文字)だけのファイルがあり、標準のWin32呼び出しを使用してそれを開こうとすると、代わりにファイルの親フォルダーが開きます。この状況で、これらのファイルのセキュリティ設定を変更しようとすると、これを実行できないか、異なるファイルの設定を予期せず変更する可能性があります。この現象が発生した場合、実際には制限ACLを持つファイルへのアクセス許可があると考えるかもしれません。

(ソース: http://support.Microsoft.com/?kbid=320081

55
Cody Gray

これをSUに投稿したので、ここにも投稿することにしました。これを達成するための最もシンプルで最速で最も簡単な方法です。私は今それがどれほど単純か笑っています。

  1. インストール WinRAR
  2. 写真からステップバイステップの手順に従ってください:
  3. enter image description here
  4. enter image description here
  5. enter image description here
  6. enter image description here

私自身もWinRaRをインストールしていたので、回避策を示すことにしました。
この回避策は、7Zipを使用しても可能です。

私が言及すべきもう1つのことは、問題はwindows Explorerと他のファイルブラウザ(winrarファイルブラウザ自体、ftpエクスプローラなど)を使用することによって引き起こされると思われるため、このファイルを通常どおり処理することです。
任意のファイルブラウザを使用して、それらのファイルを削除するだけで、アーカイブする必要はありません。乾杯!

39
AmirHossein

名前は「a。」ですが、実際の名前は「a ..」です

これを試して:

rd /q /s "C:\a..\"

そして、次のコードでフォルダーを探索してみることができます。

for /f "tokens=3 delims=<>" %%a in ('dir /ad /x "C:\*" ^| findstr " a\.\.$"') do (
  for /f "tokens=1" %%b in ("%%a") do start "" "%%~fb"
)
7
neorobin

Gitがインストールされている場合( here からirを取得できます)、次のように簡単です:

  1. 問題のあるフォルダーがある場所に移動します。
  2. コンテキストメニュー(マウスの右ボタン)> Git Bash Here。
  3. rm -rf Foldername./
4

WinRar 」を使用しました。単純なRAR、Zipプロセッサです。任意の種類のファイル名エディターを使用できます。ファイルが存在するディレクトリをWinRarで開き、名前を変更するファイル/フォルダーを右クリックして新しい名前を入力した後、名前変更を選択します。

3
Aryan

nlocker プログラムを使用して、通常は削除できないファイルとフォルダーを削除してください。

2
RyuuGan