如何删除名称以点(".")结尾的文件夹?

jer*_*liu 78 windows file-io winapi

我得到了一些由恶意软件创建的文件夹,其名称以点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是什么?

Ski*_*ick 131

这是这个问题的解决方案:

rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅适用于CMD.exe NOT PowerShell (6认同)
  • 足够公平 - 也许这就是为什么它没有被标记为可接受的答案,但它对于那些使用相同问题但我们可以使用rd的用户来说非常有用. (4认同)
  • 该问题需要一个 API 函数来删除该文件夹,并指出可以使用“rd”删除它。 (2认同)
  • 你刚刚救了我的神经.谢谢!:d (2认同)
  • 如果它在非提升的命令提示符下不起作用,也尝试在管理员模式下运行`CMD.exe` (2认同)

Cod*_*ray 57

解决方案: 当您调用RemoveDirectory时,请确保在路径前面加上字符串" \\?\".


说明: 它与点有关.根据MSDN,在某些情况下,您可能无法删除NTFS卷上的文件或文件夹,特别是当文件名在Win32名称空间中无效时(这就是您无法使用该文件打开文件的原因) Windows资源管理器中的常规方法).

如果文件名包含无效名称(例如,文件名具有尾随空格或尾随句点或文件名仅由空格组成),则可能无法删除文件.要解决此问题,请使用使用适当内部语法删除文件的工具.您可以使用"\\?\"语法和一些工具来处理这些文件,例如:
del"\\?\ c:\ path_to_file_that包含尾随space.txt"
此问题的原因类似于原因4.但是,如果使用典型的Win32语法打开其名称中具有尾随空格或尾随句点的文件,则在打开实际文件之前将删除尾随空格或句点.因此,如果您在名为"AFile.txt"和"AFile.txt"的同一文件夹中有两个文件(请注意文件名后面的空格),如果您尝试使用标准Win32调用打开第二个文件,则打开首先是文件.同样,如果您的文件名称只是""(空格字符)并且您尝试使用标准Win32调用打开它,则会打开文件的父文件夹.在这种情况下,如果您尝试更改这些文件的安全设置,您可能无法执行此操作,或者您可能会意外更改不同文件上的设置.

(来源:http://support.microsoft.com/?kbid = 320081)

  • 它可以将 del 切换到 rd,就像 `rd "\\?\C:\Users\ahmed\Desktop\buggy."` (2认同)
  • 当然可以。我刚刚使用PowerShell的rd删除了这样一个文件,效果很好。仔细检查你的语法。 (2认同)

Ami*_*ein 40

我把它发布在SU上,我决定在这里发布.它是实现这一目标的最简单,最快速,最简单的方法.我现在嘲笑它有多简单.

  1. 安装WinRAR
  2. 按照图片中的分步过程:
  3. 在此输入图像描述
  4. 在此输入图像描述
  5. 在此输入图像描述
  6. 在此输入图像描述

我自己安装了WinRaR,所以我决定在其中演示解决方法.
使用7zip也可以实现此解决方法.

我应该提到的另一件事是,因为似乎问题是由使用Windows资源管理器和任何其他文件浏览器(如winrar文件浏览器本身,ftp资源管理器等)引起的,将正常处理此文件.
您可以尝试使用任何文件浏览器,只需删除这些文件,而不是为了存档它们!干杯!

  • 使用7zip它也有效!刚刚做到了. (5认同)
  • 多么有创意的解决方案 (4认同)
  • 它适用于 7zip :)) (2认同)

小智 7

当你看到名字是"a.",但实际名称是"a .."

试试这个:

rd /q /s "C:\a..\"
Run Code Online (Sandbox Code Playgroud)

您可以尝试通过以下代码浏览该文件夹:

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


小智 5

我使用了“ WinRar ”一个简单的 RAR、ZIP 处理器。您可以使用任何类型的文件名编辑器。只需在WinRar中打开文件所在的目录,右键单击要重命名的文件/文件夹并填写新名称后选择重命名即可。

  • 这实际上对我有帮助;我使用 WinRar 解压了一堆文件,其中一个包含一个以句点结尾的文件夹。Windows 无法删除它或真正重命名它,但我可以在 WinRar 中重命名它,然后在 Windows 资源管理器(win 10)中删除它。谢谢! (2认同)

Lau*_*kas 5

如果您已经安装了git(可以从此处获得ir ),那么它很简单:

  1. 将文件浏览器导航到有问题的文件夹所在的位置。
  2. 上下文菜单(鼠标右键)> Git Bash Here。
  3. rm -rf Foldername./


小智 5

如果您需要保留数据,您还可以使用\\?\重命名文件夹的技巧。

ren "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder." "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder"
Run Code Online (Sandbox Code Playgroud)

如果您需要了解文件夹内的内容或者数据是否重要,那么这是一个理想的解决方案。

这适用于命令提示符和 PowerShell。


Ryu*_*Gan 0

尝试使用解锁程序删除通常无法删除的文件和文件夹。

  • 我很好奇解锁器是如何做到这一点的! (5认同)