问题:我有一个无法删除的 Windows 7 子目录。
虽然我在这里认识其他人,并且 Internet 上的其他许多人都询问过此类 Windows 7 文件系统问题,但我在这里的问题特别涉及 Windows 7 上特定类别的不可删除文件,这些文件在目录名称。
是否有更好的工具来检查和/或编辑我的文件系统(如果需要,可以使用十六进制)?
操作系统:我正在运行 x64 专业版,它已完全更新。
尝试过的内容:我已经阅读了许多有关此主题的网页,并尝试了许多潜在的解决方案。我最近一直在使用 PowerShell 研究这个问题,它似乎完全能够处理系统内部问题。在这一点上,我正在寻找文件系统的十六进制编辑器之类的东西。
它不是由什么引起的:
- 长文件名,或
- 由于位于漫长的道路上,
它没有通过以下方式解决:
- 使用旧的 DOS 文件命名方案重命名
- 运行整个文件系统的CHKDSK
- 关闭所有其他可能正在访问它的程序
- 禁用病毒软件
- 使用 Delinvfile.exe 4.5 实用程序。注意:Delinvfile 说它无法修复,“短名称包含无效字符的文件和文件夹。这些包括字符 [文件名中不允许使用]:
< - Less than symbol > - Greater than symbol : - Colon " - Quotation Mark / - Forward Slash | - Vertical Bar ? - Question mark * - Asterisk
是什么原因造成的?在我的例子中,不可删除的子目录是几个月前使用我用于源树备份的自定义PHP程序创建的。它的名称中似乎有空格或其他不良字符,但我不能确定。它在文件目录中可见,但无法删除、重命名、rmdir 等。
调查:我可以在我的文件系统上移动它,并将它放在 C: 上一个名为“holds bad subdir”的子目录中。
在这里您可以使用 PowerShell看到它。首先,我使用Get-ChildItem(与别名 'dir' 相同)显示它:
PS C:\holds bad subdir> Get-ChildItem
Directory: C:\holds bad subdir
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 1/9/2014 3:01 AM 20120530-04
如果我尝试在cmd窗口中通过输入'del "2' + tab 来删除它,它完成文件名扩展如下:del "20120530-04",表明目录名末尾有一个空格。当我执行此命令时,结果是:
找不到 C:\holds bad subdir\20120530-04
如果我尝试使用 del 2* 删除它,系统会返回,就好像它已删除它一样,但没有。
如果我在 PowerShell 中发出相同的命令,并且使用该Force
选项,它会报告“指定路径 C:\holds bad subdir\20120530-04 处的对象不存在。”,如下所示:
PS C:\holds bad subdir> Remove-Item 2* -Force Remove-Item : An object at the specified path C:\holds bad subdir\20120530-04 does not exist.At line:1 char:1
+ Remove-Item 2* -Force
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Remove-Item], PSArgumentException
+ FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.RemoveItemCommand
这有点奇怪,因为目录可以清楚地看到它,但是任何方法显然要么看不到它,要么不能应用于它。
我还可以在Windows Explorer中查看不可删除的子目录。当我浏览它时,它说,“这个文件夹是空的”。如果我尝试在那里删除它,我会得到:
此外,如果我查看此文件夹的属性,我可以看到名称为“20120530-04”,即末尾有一个额外的空格。
同样有趣的是,安全选项卡报告“(X) 请求的安全信息不可用或无法显示”。
而且它不是只读的,也不是隐藏的。
问题范围:现在,这不是一个大问题,很容易将这个子目录埋在一个偏僻的子目录中而不必担心。
但对我来说,这已经变成了一项智力挑战,并且在一定程度上是了解更多关于 Windows 7 内容的一种方式。我想我很惊讶 Windows 中的这样一个错误可能存在于如此低的级别,并且安装了如此多的系统。世界。在这一点上很难知道这是一个 Windows 错误、错误数据(一个错误进入)还是只是错误数据。