删除Windows中包含无效字符的文件


16

我有一些文件名中包含冒号的文件(例如1d67c0d23e859ed4a259749e4a720d9e:default-sink)。当我尝试使用以下命令从命令行中删除它们时:

c:\backup> del /F *.*

我收到“系统找不到指定的文件”。对于每个文件。如果我指定一个文件:

c:\backup> del /F "1d67c0d23e859ed4a259749e4a720d9e:default-sink"

我收到“文件名,目录名称或卷标签语法不正确。”。如果我尝试在父文件夹上使用rd

如何删除这些文件?


2
这些文件是在我引导到Linux时在NTFS分区上创建的。猜猜我将不得不使用Linux启动盘,因为Windows在文件系统驱动程序级别似乎不喜欢文件名中的冒号。
grom 2010年

Answers:


22

Microsoft KB文章列出了删除此类文件的可能方法,网址为:

http://support.microsoft.com/kb/320081

我通常使用的方法是本机API方法:

del "\\?\c:\path\1d67c0d23e859ed4a259749e4a720d9e:default-sink"

根据:

http://msdn.microsoft.com/zh-CN/library/aa365247%28VS.85%29.aspx

:是NTFS保留字符,我上面提到的原生API的方法是删除这些文件的推荐方式。


4
这不适用于冒号,因为它被解释为命名数据流。
psusi

这适用于我的情况。我遇到问题的文件包含逗号,
Maher Fattouh

谢谢,这对我有用。文件结束了一段时间。CA848D8F。
马斯特罗

1
不起作用 我的文件名包含反斜杠。
Pacerier's

如果文件名包含:OP询问的内容,则此方法无效。chkdsk在实时Linux中使用或删除它。
Sourav Ghosh

15

我想您可以尝试8.3名称吗?

del /F 1d67c0~1

请注意,在NTFS驱动器上,您可以显式禁用8.3功能,因此,在这种情况下,您将无法使用此选项。获取文件名dir adir /x

曾经有一个名为的免费软件工具,delinvfile但他们已经消失了,并将其更改为共享软件/付费


我如何在format禁用了8.3名称支持的命令创建的NTFS卷上执行此操作?
user2284570 2015年

1
@ user2284570此方法无效。当我编写该答案时,Microsoft已启用8.3名称,但如今这些默认情况下处于禁用状态。
马克·亨德森

@MarkHenderson,我的文件名是7:2。如何使用8.3名称作为文件名7:2
佩里耶

@Pacerier看到我以前的评论。此方法不适用于现代操作系统。Windows XP或更早版本。
马克·亨德森

13

这为我工作:

  1. chkdsk /f
  2. 重新启动电脑
  3. 然后我可以选择并删除文件

4

关闭保存在包含此类文件的驱动器中的所有文件(如果已打开)。现在,打开驱动器属性。

“我的电脑”->“右键单击此驱动器”>属性

然后,进入“ 工具 ”选项卡,然后点击“ 立即检查 ”下的“错误检查”的标签。

在此处输入图片说明点击显示大图

这将卸载驱动器并扫描整个驱动器以查找错误,最终它将删除带有非法名称的此类文件。完成后,将显示一条消息,指出某些文件已修复。

我已从外部硬盘成功删除了此类文件。



1

尝试将父文件夹重命名为单个字符(a,1等),然后尝试删除父文件夹。如果它不起作用,则移至第一个子文件夹并将其重命名为单个字符,然后再次尝试删除。我经常对带有无效字符的文件使用此方法(不要问我,因为我不知道它们是如何创建的),或者对于路径超过最大值的文件(同样,不要问这是怎么发生的)。


1

7zip可以删除Windows无法删除的文件;过去我在处理过长的文件名时使用过它,但是我从未在带有冒号的文件中尝试过。它们通常用于表示ADS。


这是因为7-zip使用cygwin。
user2284570 2015年

1
不适用于我的两个文件。第一个文件的文件名带有反斜杠,第二个文件的文件名带有冒号。
Pacerier's

不,这是因为7-zip使用Windows API而不是Shell。它具有与API相同的局限性:它认为冒号表示流。
user165568 '19

7zip为我工作
user1278519 19-10-10

1

我有一个双引导系统,但以上答案都不对我有用。如果文件位于其他操作系统安装的磁盘上(对我来说是Ubuntu 16.04 LTS),则可以使用其他操作系统simpy删除它;)


在绑定中,这是相当合理的(尽管无法对联机计算机执行此操作)。另外,不需要本机双重引导,因为我们可以引导实时分发来执行此操作,例如Fedora安装盘或Knoppix。但是,在这样的环境中要小心,因为我们用来挂载该系统的NTFS3G驱动程序将不遵守大多数Windows权限/ ACL(这正是为什么它如此有效地消除“卡死”文件的原因) 。
后台打印程序

0

您是否尝试引用文件名?提供您正在运行的确切命令会很方便。


我已将其添加到我要质疑的确切命令中。
grom

0

您是否尝试过使用通配符?例如,“ del 1d67c0d23e859ed4a259749e4a720d9e *。*”可能有效。


您我尝试过通配符。没有运气
Grom

1
我想到的下一件事是使用linux cd启动系统(例如system rescue cd),在其中安装卷并尝试从中删除。到那时,您可能会得到有趣的结果,因为谁知道文件系统中的实际情况。
迈克尔·科恩,

@MichaelKohne:我认为使用Unix路径实现也是正确的解决方案。但是为什么要使用linux?Windows作为NT子系统运行,并且已经有POSIX / Unix NT子系统。
user2284570 2015年

1
@ user2284570-因为考虑到它们是使用Linux创建的,所以linux NTFS驱动程序似乎允许了它不应该包含的内容,即使Windows POSIX shell也可能无法通过文件系统驱动程序。引导活动的Linux CD,删除伪造的文件并重新引导回到Windows,要容易得多。
迈克尔·科恩

@MichaelKohne:不,因为UNC路径已经可以使用(本机子系统),并且POSIX子系统不能直接访问备用数据流,因此可以:在内部文件中使用。
2015年


0

我有一个带逗号的文件夹。我尝试了上述一些建议,但未能使它们起作用。

我可以使用cygwin删除文件夹。安装该应用程序并不适合每个人,但可以完成工作。


0

以上建议对我都不起作用。我用WinRar。打开winrar,您将看到文件列表,其中将包含可疑文件“ filename”(由您创建为“ filename:some_text.txt”。)在Winrar中重命名该文件并提供扩展名(例如.txt或.doc)。

返回Windows资源管理器,您将看到“文件名.txt”(或doc)。从那里删除它。

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.