黑色时钟图标覆盖?

Syn*_*ech 7 file-attributes

当我清理一些(非常)旧文件时,我解压了一个.zip包含 1989 年旧文件的文件。我惊讶地发现一些文件显示黑色时钟图标覆盖,如下所示。

我打开了一个命令提示符并用 来检查它们attrib,但没有发现任何异常。我还检查了它们的高级属性对话框,但仍然没有发现任何异常。

这到底是怎么回事,我该如何摆脱它?


图 1:Windows 资源管理器显示带有黑色时钟覆盖的文件

Windows 资源管理器的屏幕截图显示未知的黑色时钟图标覆盖

Syn*_*ech 6

意义

根据微软的 Raymond Chen 的说法,它是更令人困惑的图标叠加之一(可能是因为它的稀有性)。黑色时钟覆盖是NTFS 扩展属性“离线”,表示它已备份到磁带。换句话说,如果不首先安装正确的磁带,当前无法访问该文件。

解释

但是我没有磁带驱动器!“我听说你反对。这并不奇怪;我也没有。雷蒙德解释说:

黑色时钟尤其令人费解,因为即使您的系统没有配备分层存储管理,您有时也会看到它。发生这种情况时,是因为某些程序(通常是安装程序)没有正确检查错误代码。

就我而言,该文件是在 2010 年创建的,可能是在 Windows 7 中创建的(它被标记为 2010 年制作)。它在 Windows XP 中被解压缩到由 Windows 7 创建的 NTFS 卷上。 7-Zip 中的错误或文件本身的内容可能会导致不一致,从而导致这种奇怪的行为。

观察

Windows XP 的attrib命令无法显示该属性,因为 XP 是 2001 年发布的,并且仅限于基本RASH属性(它没有显示其他一些在 Vista+ 中可以看到的属性)。但是,如果您在 Windows XP 资源管理器中启用“属性”列,您可以看到由O.

该属性引起的好奇是使用dir命令:

1989.01.19  09:53            11,800 AGUY0.CMP
1989.01.19  09:54          (10,912) AGUY1.CMP
Run Code Online (Sandbox Code Playgroud)

如您所见,cmd通过将其大小括在括号中来指示标记为脱机的任何文件。但是,它不会影响底部指示的总字节数

您也可以使用 PowerShell 来查看它:

>  dir * | select Name, Attributes | more

Name                                                                 Attributes
----                                                                 ----------
AGUY0.CMP                                            Archive, NotContentIndexed
AGUY1.CMP                               ...emporary, Offline, NotContentIndexed
Run Code Online (Sandbox Code Playgroud)

另一种(凌乱)查看它的方法是使用以下fsutil命令:

> fsutil usn readdata AGUY0.CMP
…
File Attributes  : 0x2020
…

> fsutil usn readdata AGUY1.CMP
…
File Attributes  : 0x3120
…
Run Code Online (Sandbox Code Playgroud)

您会注意到第二个文件0x1000FILE_ATTRIBUTE_OFFLINE属性包括属性常量的位掩码。

一个奇怪(虽然可以理解)的观察是在 Vista+ 中,标记为脱机的文件也会自动标记为未编入索引(即I属性)。但是,使用attrib删除I属性并不会剥离它们的离线属性;它们不再具有非索引属性,但仍标记为离线。

图 1:Windows 7 资源管理器中脱机文件的屏幕截图

Windows 7 中脱机文件的屏幕截图

解决方案

您可以使用attrib来自较新版本的 Windows的命令去除该属性。如果这不可行,那么您还可以使用像 Febooti 的FileTweakAttribute Changer这样的 shell 扩展 。您还可以使用JPSoft 的Take Command 之类的替代品,attrib甚至可以使用cmd它本身。PowerShell中也可用于访问和修改扩展属性,但它并不像你一样或外壳扩展。attrib