问题:我有一个Windows 7子目录,我无法删除.
虽然我在这里认识其他人,并且互联网上的其他许多人已经询问了这类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:中名为'hold 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
如果我尝试通过键入"del"2'+ tab在cmd窗口中删除它,它将完成文件名扩展,如下所示:del"20120530-04",表明目录名末尾有一个空格.当我执行此命令时,结果是:
无法找到C:\持有坏子目录\ 20120530-04
如果我尝试使用del 2*删除它,系统将返回,就好像它已删除它,但不是.
如果我在PowerShell中发出相同的命令,并且还带有该Force
选项,它会报告"指定路径上的对象C:\ hold 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资源管理器中查看不可删除的子目录.当我浏览它时,它说,"这个文件夹是空的".如果我尝试删除它,我得到:
此外,如果我查看此文件夹的属性,我可以看到名称是"20120530-04",也就是说,末尾有一个额外的空格.
另外有趣的是,"安全"选项卡报告"(X)请求的安全信息不可用或无法显示."
它不是只读的,也不是隐藏的.
问题范围:现在,这不是一个大问题,很容易将这个子目录埋在一个偏远的子目录中,而不用担心它.
但对我来说,这已成为一项智力挑战,部分是一种了解Windows 7内容的方法.我想我很惊讶Windows中的这样一个错误可能存在于如此低的水平,而且安装了如此多的系统世界.在这一点上很难知道这是一个Windows错误,坏数据(错误进入),还是只是坏数据.
根据您无法删除NTFS文件系统卷上的文件或文件夹(需要显示JavaScript),以下内容应该有效(请注意它使用UNC路径).
rd "\\?\C:\holds bad subdir\20120530-04 "
请务必使用cmd.exe执行此操作.它似乎不适用于PowerShell的Remove-Item(rd).
另见:
如何删除包含尾随空格的文件夹
重命名/删除具有前导和尾随空格的Windows(x64)文件夹.