我对批量文件中可以设置多少变量感到有点好奇。
我这里有一个小脚本
@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
作为指导。
任何帮助将不胜感激!
答案 0 :(得分:4)
那么真正的答案是它取决于您的机器的限制,如RAM,尤其是硬盘空间等等。但是,我相当肯定你在寻找理论答案,而不是实际答案(我也会这样!)。
所以,对于理论上的答案,让我们在这里假设以下(抱歉,如果我听起来很讽刺,但这些是真正的要求,而且它们不太现实):
因此,我们遇到的大限制器是如何存储批处理变量。它们使用签名的int在数组中进行寻址。这允许存储器中存储最多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)=