【问题标题】:How to delete a folder that name ended with a dot (".")?如何删除名称以点(“.”)结尾的文件夹?
【发布时间】:2011-05-03 19:25:48
【问题描述】:

我得到了一些恶意软件创建的文件夹,它们的名称以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?

【问题讨论】:

  • 我不敢相信这仍然发生在 Windows 10 中,由 Windows 更新本身(更新后无法删除 Windows.old)。

标签: windows winapi file-io


【解决方案1】:

Here's a solution to this problem:

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

【讨论】:

  • 问题想要一个 API 函数来删除文件夹,并声明可以使用 rd 删除它。
  • 很公平 - 也许这就是为什么它没有被标记为已接受的答案,但对于那些遇到相同问题但我们可以使用 rd 的用户来说,它仍然非常有用。
  • 请注意,这只适用于 CMD.exe 而不是 PowerShell
  • 如果CMD.exe在非提升的命令提示符下不起作用,也请尝试在管理员模式下运行
  • 太棒了! ?✨
【解决方案2】:

解决方案: 调用 RemoveDirectory 时,请确保在路径前加上字符串“\\?\”。


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

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

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

【讨论】:

  • 完美地为我删除了一个名称以“。”结尾的文件。非常感谢!
  • 它可以像rd "\\?\C:\Users\ahmed\Desktop\buggy." 一样将 del 切换到 rd
  • 这在 cmd 上效果很好,但是 PowerShell 是否有等价物? pwsh 中的rdremove-item 的别名,不支持`\\?\`。
  • 当然可以。我只是使用 PowerShell 的 rd 删除了这样一个文件,它工作得很好。仔细检查你的语法。
  • 哇。在尝试对数据集进行一些自然语言处理时偶然发现了这个问题(数据集中的每个文件都命名为{IncrementalNumber}.),我对为什么我的数据处理脚本失败感到非常困惑。这现在是有道理的,但似乎这种行为是如此出乎意料,以至于由于应用程序错误地处理以空格或句点结尾的文件名,它可能会产生安全后果。
【解决方案3】:

我已经在 SU 上发布了这个,我也决定在这里发布。它是实现这一目标的最简单、最快和最简单的方法。我现在在笑它是多么简单。

  1. 安装WinRAR
  2. 按照图片中的分步过程进行操作:

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

我应该提到的另一件事是,问题似乎是由使用 Windows 资源管理器引起的,任何其他文件浏览器(如 winrar 文件浏览器本身、ftp 资源管理器等)都会将这些文件视为正常文件。
您可以尝试使用任何文件浏览器并简单地删除这些文件,而不必费心归档它们! 干杯!

【讨论】:

  • 多么有创意的解决方案!
  • 对文件有效,对目录无效
【解决方案4】:

如果你安装了 git(你可以从 here 获取 ir)那么它很简单:

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

【讨论】:

  • rm: cannot remove ‘.bin’: Directory not empty
  • @Green 如果您有权删除文件夹内容,-rf 部分应该负责文件夹内容。
【解决方案5】:

当你看到名字是“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"
)

【讨论】:

    【解决方案6】:

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

    【讨论】:

    • 这应该有什么帮助?
    • 帮助您浏览文件/文件夹并将文件重命名为...并完成。
    • 这实际上帮助了我;我曾使用 WinRar 解压缩一堆文件,其中一个包含一个以句点结尾的文件夹。 Windows 无法删除它或真正重命名它,但我可以在 WinRar 中重命名它,然后在 Windows 资源管理器(win 10)中删除它。谢谢!
    【解决方案7】:

    尝试使用unlocker程序删除无法正常删除的文件和文件夹。

    【讨论】:

    • 我很好奇解锁器怎么能做到这一点!
    【解决方案8】:

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

    ren "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder." "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder"
    

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

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

    【讨论】:

      【解决方案9】:

      在 Windows 10 上使用 Ubuntu 的 bash rm 命令

      【讨论】:

      • rm: cannot remove ‘.bin’: Directory not empty
      【解决方案10】:

      如果您想在 bash 中保留文件,还有选项。
      您将需要适用于 Linux 软件包的 Windows 子系统(我已安装 Ubuntu)

      保存文件。打开命令提示符并 cd 到文件或文件夹所在的位置。
      现在输入“bash
      这将在提示中打开 bash。现在输入mv '[folder or file you want to move]' '[new name (can include path)]'(mv 还有更多内容,所以如果您想阅读它的所有选项,请使用“man mv”,这将打开其手册页(然后使用 q 返回 bash))
      mv 命令是 move 的缩写,但它具有重命名事物的次要功能。
      同样在 bash 中使用“单引号”而不是普通的“双引号”,因为 bash 期望使用“单引号”。

      这是一个例子。假设您的文件夹名为“data 1.”,位于c:\users(因此错误文件夹的完整路径为c:\users\data 1.
      1. 使用任何方法打开命令提示符
      2.输入cd c:\users
      3. 现在输入 bash 这会将 bash 加载到您之前所在的文件夹中
      4. 最后输入mv 'data 1.' 'data 1'
      5. 文件夹现在可以访问了,你可以选择删除它。

      【讨论】:

        猜你喜欢
        • 2014-12-07
        • 2018-05-19
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 2012-01-23
        相关资源
        最近更新 更多