限制回收站中的文件数量?

Syn*_*ech 5 recycle-bin windows-xp

几周前,我小心地删除了数据驱动器的旧备份。我在旧备份和实时副本之间进行了重复文件检查,并将旧副本删除到回收站。一切都很好,正如预期的那样,直到突然我无法再删除任何内容。每当我尝试从旧备份中删除文件(任何文件)时,它都会失败。

我检查了回收站,突然想到可能是因为回收站中的文件太多了。我不是在谈论size,而是在谈论文件的数量。以下是关于这种情况的一些事实:

  • 它是Windows XP系统
  • 带有旧备份的卷是 FAT32
  • 带有旧备份的卷有 302MB 的可用空间
  • 当 bin 中有 31,594 个文件时出现问题
  • 回收的文件使用了 236MB
  • INFO2文件(跟踪回收文件的原始文件名)超过 24MB
  • 无论文件大小如何,尝试再删除一个文件都不起作用
  • 回收站配置为对所有驱动器没有限制

我试着了一下,但我能找到最接近的是关于回收站大小限制的信息,而不是关于文件数量的信息

有谁听说过吗?任何人都可以确认有一个限制多少文件可以存储在哪里?

“完整”回收站的屏幕截图

Rik*_*Rik 4

FAT32 目录可以有 65,536 个目录项。

\n\n

每个文件和\xc2\xa0 子目录包含 2 到 13 个条目,具体取决于其名称的 \xc2\xa0 长度。

\n\n

因此,在最乐观的情况下,如果文件名都在 8.3 范围内,您的回收站可以容纳 65,536 /2 = 32768 个文件+目录。(简称)

\n\n

您的 31594 个文件 + 53 个目录似乎已达到限制。
\n由于文件名较长,可能有一些文件需要超过 2 个条目。

\n\n
\n\n

编辑:

\n\n

FAT32 规范可在此处获取:
\n http://www.microsoft.com/whdc/system/platform/firmware/fatgen.mspx

\n\n

它提供了所有内容的详细信息,包括目录结构和\xc2\xa0长文件名(LFN)在目录中存储的方式。\xc2\xa0基本上,有一个目录条目始终保存短\xc2\xa0(8.3 ) 文件名的版本。由于 Windows 需要区分长文件名 (LFN) 的大小写,因此需要为 LFN 提供单独的目录条目(如果长度超过 13 个字符,则为多个目录条目)。

\n\n
\n

为了满足访问局部性和透明性的目标,长目录项被定义为具有特殊属性的短目录项。

\n
\n\n
\n\n

编辑#2:

\n\n

我在装有 Windows XP 和 FAT32 驱动器(最大回收站)的虚拟机中进行了一些测试。

\n\n

在一个data目录中,我创建了一个子目录test,然后运行此批处理文件:

\n\n
@echo off\nif "%1"=="####" goto %1\n  for %%a in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do call %0 #%1 %2 %3 %4 %%a\n  goto EOF\n:####\n  echo %2%3%4%5\n  echo test > test\\%2%3%4%5\n:EOF\n
Run Code Online (Sandbox Code Playgroud)\n\n

生成 65534 个文件(仅包含短名称)。\n正如预期的那样,由于 2 个目录条目(FFFE和) ,它无法添加最后两个文件( 和)。所以只取 2 个条目,稍后再了解)FFFF......

\n\n

接下来我选择了 45000 多个文件并在资源管理器中删除了这些文件
\n(在删除之前花了一些时间来收集信息:)

\n\n

因为回收站中的文件名是等De1De2这些都是长文件名(因为大小写混合)。删除 32765 个文件后,资源管理器出现错误。

\n\n

dir /a/x了我 32767 个文件和 2 个目录。
\n32765 个用户文件(带有LFN),一个INFO2desktop.ini(都没有 LFN )。

\n\n

(32765 * 2) = 65530 + 2 (不含 LFN) + 2 个目录条目 = 65534

\n\n

嗯,还有 2 点;)

\n\n

对于 65534,它应该能够再添加 1(使用 LFN)。所以我认为 Windows 可能需要一个额外的免费条目来存放一些临时文件。

\n\n

但正如您所看到的,限制是 65530 个目录条目,其中每个文件占用 2 个目录条目
。 \n(因此为32765 个文件,因为生成的文件名是大小写混合的,如果扩展名大于 3,则数量甚至更少)。

\n\n

当我测试这个时,文件名都是De1De2等等...(所有文件没有扩展名的原始文件)您的文件名有扩展名。如果它们具有较长的扩展名 (>3),则可能需要更多条目,因为 Windows 会在回收站中保留扩展名。

\n\n

但确实奇怪的是,微软并没有选择在回收站中只使用短名称,因为(原始)文件名应该存储在INFO2.

\n\n
\n\n

编辑#3:

\n\n

我刚刚确认Windows的删除机制确实需要一个额外的目录项。

\n\n

我使用了xcopy e:\\recycled\\*.* e:\\test\\ /e/s/h完整的回收站,将回收站中的所有文件(32767 个文件)复制到测试目录。

\n\n

我仍然可以De_test1.txte:\\test. 创建时De_test2.txt出错。

\n\n

因此,“Windows 删除”应该足以再创建 1 个 (LFN) 文件,但由于内部原因,它不能。

\n\n

因此,对于普通文件夹,限制为 65536 -2...= 65534 个条目。
\n对于回收站,对于.和为 65536 -2,..对于desktop.iniINFO2
\n-2,对于临时文件 (?) = 65530 个条目
\n对于 65530 个条目,最多为 32765 个文件(如果是则更少)扩展>3)。

\n