虽然我知道其他人在这里以及互联网上的许多其他地方都问过这类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
"What caused it?"在我的情况下,这个无法删除的子目录是几个月前由我使用用于源代码备份的自定义PHP程序创建的。它的名称似乎带有空格或其他不良字符,但我无法确定。它在文件目录中可见,但无法删除、重命名、rmdir等操作。
调查:我可以将其移动到文件系统中,并将其放置在名为“持有坏子目录”的子目录中。
在此处,您可以通过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的漏洞、错误数据(由漏洞引入)还是仅仅是错误数据。
DIR >textfile
可以向十六进制编辑器展示更多信息? - Magoo