如何删除名称以点(“。”)结尾的文件夹?


89

我得到了一些由恶意软件创建的文件夹,这些文件夹的名称以诸如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)。
该死的蔬菜

Answers:


147

这是解决此问题的方法

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

1
问题是要使用API​​函数删除文件夹,并声明可以使用删除该文件夹rd
Jcl 2014年

4
足够公平-也许这就是为什么它没有被标记为可接受的答案,但是对于那些遇到相同问题但可以在哪里使用rd的用户来说,它还是非常有用的。
david.barkhuizen

2
你刚刚救了我的神经。谢谢!:D
Benny Neugebauer

8
请注意,这仅适用于CMD.exe,而不适用于PowerShell
Lorne K

2
CMD.exe如果它在非提升命令提示符下不起作用,也尝试在管理员模式下运行
greg

63

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


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

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

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


我很努力地删除了以“。”结尾的文件。非常感谢你 !
AFract

1
它的工作rd "\\?\C:\Users\ahmed\Desktop\buggy."
原理是

这在cmd上效果很好,但是PowerShell有等效功能吗?rdpwsh中的别名是remove-item不支持“ \\?\”的别名。
Kagami Sascha Rosylight

1
当然可以。我只是使用PowerShell的rd删除了这样的文件,它工作得很好。仔细检查您的语法。
SilverbackNet

哇。在尝试对数据集进行某些自然语言处理(数据集中的每个文件都命名为{IncrementalNumber}.)时偶然发现了这个问题,我对为什么我的数据处理脚本失败感到非常困惑。现在这是有道理的,但是似乎该行为是如此出乎意料,以至于由于应用程序错误地处理以空格或句点结尾的文件名,它可能会带来安全后果。
Spencer D

46

我已经将其发布在SU上,我也决定将其发布在这里。这是实现这一目标的最简单,最快和最简单的方法。我现在在笑这有多简单。

  1. 安装WinRAR
  2. 按照图片中的逐步步骤操作:
  3. 在此处输入图片说明
  4. 在此处输入图片说明
  5. 在此处输入图片说明
  6. 在此处输入图片说明

我本人已安装WinRaR,因此我决定在其中演示解决方法。
使用7zip也可以解决此问题。

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


6
多么有创意的解决方案!
Nosgoroth '16

8

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

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

rm: cannot remove ‘.bin’: Directory not empty
绿色,

@Green如果您有权删除文件夹内容,则该-rf部分应注意文件夹内容。
Laurynas Lazauskas

7

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

5

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


那应该有什么帮助?
塔沃

1
帮助您浏览文件/文件夹并将文件重命名为...完成。
Aryan 2015年

1
这实际上对我有所帮助;我曾使用WinRar解压缩一堆文件,其中一个包含一个以句点结尾的文件夹。Windows无法删除它或不对其进行真正的重命名,但是我可以在WinRar中对其进行重命名没有问题,然后在Windows资源管理器(win 10)中将其删除。谢谢!
尼克

2

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


3
我很好奇解锁器如何做到这一点!
jerry.liu

0

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


rm: cannot remove ‘.bin’: Directory not empty
绿色,

0

如果您想将文件保留在bash中,也可以使用。
您将需要Windows Subsystem for Linux软件包(我已安装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。现在可以访问该文件夹,您可以选择将其删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.