真正的答案是,这取决于您机器的限制,例如 RAM,尤其是硬盘空间等。但是,我相当确定您正在寻找理论答案,而不是实际答案(我也是!)。
因此,对于理论答案,让我们假设以下内容(抱歉,如果我听起来很讽刺,但这些是真正的要求,而且实际上不太可能):
- 您的计算机架构是 64 位(最好是 Itanium 级)。
- 您有一个 128 TB 的 NTFS 硬盘
- 您拥有一个精简的 32 核 4THz(太赫兹)处理器,因此您可以在老死之前看到它的完成。
- 您至少拥有 384GB RAM(如果您压缩名称并使用空字符串作为值)
- 只有65807 个文件 https://Check.the.windows.7.installation.ISO.files最初附带带有 sp1 的 Windows 7 Professional 以及硬盘上的 1 个批处理文件。
- 只有96783登记处 https://Check.the.windows.7.installation.ISO.files硬盘上最初随 Windows 7 Professional SP1 附带的索引。
因此,我们遇到的最大限制是批处理变量的存储方式。它们使用有符号整数在数组中寻址。这允许内存中最多存储 2,147,483,647 个变量。现在,硬盘发挥作用。如果允许将硬盘用于批处理变量,则需要 2 个批处理变量才能将硬盘文件用作批处理变量:一个用于缓存,一个用于 for 循环。现在我们有 4,294,967,295 个额外的批次变量可以使用。现在对于注册表,假设 Windows 使用有符号整数来索引注册表,则总共有 2,147,483,647 个注册表索引。现在,将其加起来,(2,147,483,647 - 2) + (4,294,967,295 - (65807+1)) + (2,147,483,647 - 96783) =
8,589,771,996
(假设公平竞争,没有 c++ 编码作弊)