我有点好奇我可以在批处理文件中设置多少个变量。
我这里有一个小脚本
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR /L %%P IN (1,1,2147483647) DO (
SET Foo[%%P]=%%P
ECHO !Foo[%%P]!
)
但是这个脚本需要永远运行。那么,有什么办法可以找出可变金额限制吗? (当然还有批处理文件中可以使用多少个变量。)
编辑:
因为下面的评论说 var。由于操作系统不同,金额可能会有所不同。因此,如果您愿意回答,请使用
Windows 7 64bit w/ 4 GB RAM
作为您的指南。
任何帮助将不胜感激!
真正的答案是,这取决于您机器的限制,例如 RAM,尤其是硬盘空间等。但是,我相当确定您正在寻找理论答案,而不是实际答案(我也是!)。
因此,对于理论答案,我们假设以下内容(抱歉,如果我听起来很讽刺,但这些是真正的要求,而且它们不太现实可能):
因此,我们遇到的最大限制是批处理变量的存储方式。它们使用有符号整数在数组中寻址。这允许内存中最多存储 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) =
如果这是真的,那么这是一个美丽的数字。这意味着地球上的每个人(包括新生儿)都有 1 个变量。 :)