当我在清理一些(非常)旧的文件时,我解压了一个.zip
包含 1989 年旧文件的文件。我惊讶地发现一些文件显示黑色时钟图标覆盖,如下所示。
我打开命令提示符并用 进行检查attrib
,但没有发现任何异常。我还检查了高级属性与他们对话,仍然没有发现任何异常。
到底发生了什么事?我该如何摆脱它?
图1:Windows 资源管理器显示带有黑色时钟覆盖的文件
答案1
意义
[据微软的 Raymond Chen][1] 称,这是最令人困惑的图标叠加层之一(可能是因为它很罕见)。黑色时钟叠加层是 [NTFS 扩展属性][2]“脱机”,表示已将其备份到磁带。换句话说,如果不先安装正确的磁带,则当前无法访问该文件。解释
“*但我没有磁带驱动器!*”我听到你反对。这并不奇怪;我也不奇怪。雷蒙德解释道:黑色时钟尤其令人困惑,因为即使您的系统未配备分层存储管理,有时您也能看到它。出现这种情况时,是因为某些程序(通常是安装程序)没有正确检查错误代码。
就我而言,该文件是在 2010 年创建的,很可能是在 Windows 7 中创建的(它被标记为在 2010 年创建的)。它在 Windows XP 中解压到 Windows 7 创建的 NTFS 卷上。7-Zip 中的错误或文件本身的内容可能导致了不一致,从而导致了这种奇怪的行为。
观察结果
Windows XP 的 `attrib` 命令无法显示该属性,因为 XP 是在 2001 年发布的,并且仅限于基本的 `RASH` 属性(它不显示 Vista+ 中可以看到的其他几个属性)。但是,如果您在 Windows XP 资源管理器中启用 *Attributes* 列,则可以看到由 `O` 表示的属性。该属性引起的好奇心与以下dir
命令有关:
1989.01.19 09:53 11,800 AGUY0.CMP
1989.01.19 09:54 (10,912) AGUY1.CMP
如您所见,cmd
通过将文件大小括在括号中来指示标记为脱机的任何文件。但它不会影响总字节数如底部所示。
你也可以使用 PowerShell 来查看:
> dir * | select Name, Attributes | more
Name Attributes
---- ----------
AGUY0.CMP Archive, NotContentIndexed
AGUY1.CMP ...emporary, Offline, NotContentIndexed
另一种(混乱的)查看方式是使用以下fsutil
命令:
> fsutil usn readdata AGUY0.CMP
…
File Attributes : 0x2020
…
> fsutil usn readdata AGUY1.CMP
…
File Attributes : 0x3120
…
您会注意到第二个文件的属性包括属性常量0x1000
的位掩码FILE_ATTRIBUTE_OFFLINE
。
一个奇怪的(但可以理解)现象是,在 Vista+ 中,标记为脱机的文件也会自动标记为未编入索引(即属性I
)。但是,使用attrib
删除I
属性才不是剥离它们的离线属性;它们不再具有非索引属性,但仍标记为离线。
图1:Windows 7 资源管理器中的脱机文件截图
解决方案
您可以使用较新版本的 Windows 中的 `attrib` 命令删除属性。如果这不可行,那么您也可以使用 shell 扩展,如 Febooti 的 [FileTweak][4] 或 [Attribute Changer][5]。您还可以使用 `attrib` 的替代品,甚至 `cmd` 本身,如 JPSoft 的 [Take Command][6]。PowerShell [也可以使用][7] 来 [访问和修改扩展属性][8],但它不如 `attrib` 或 shell 扩展那么好用。答案2
这意味着该文件已被存档至磁带。