Windows批处理文件的文件大小和行长度限制

Windows批处理文件的文件大小和行长度限制,windows,batch-file,Windows,Batch File,我正在生成一个Windows批处理文件,它可能会变得相当大,比如说几兆字节。我已经搜索了有关批处理文件中的最大文件大小和最大行长度的可能限制,但找不到任何内容。有实际经验吗?我认为文件大小可以达到2GB,甚至更大。它是一种解释性语言,因此,如果操作正确,文件大小限制应该是文件系统的文件大小限制。由于批处理文件太大,我从未遇到过任何错误,我创建的一些批处理文件的大小为几MB 应该有一个行长度限制,但它应该大于256。这很容易测试,只需在“echo%A%”之后做一些“set A=1234567890

我正在生成一个Windows批处理文件,它可能会变得相当大,比如说几兆字节。我已经搜索了有关批处理文件中的最大文件大小和最大行长度的可能限制,但找不到任何内容。有实际经验吗?

我认为文件大小可以达到2GB,甚至更大。它是一种解释性语言,因此,如果操作正确,文件大小限制应该是文件系统的文件大小限制。由于批处理文件太大,我从未遇到过任何错误,我创建的一些批处理文件的大小为几MB

应该有一个行长度限制,但它应该大于256。这很容易测试,只需在“echo%A%”之后做一些“set A=123456789012…endofline”,你就会知道你能走多远

对于我来说,它适用于非常长的行(大约4K),但在8K
echo
时会给出一条消息,“行太长”,所以8192字节应该是一个限制

现在对文件大小也进行了测试,在“echo-end”之后,使用“echo-off”测试了数千行设置行,它可以处理11MB的文件(虽然需要几秒钟才能完成:)-在这里看不到任何限制


110MB也起了作用。这够了吗?;)

有些想法并不一定相互排斥:

  • 切换到
  • 切换到数据驱动的应用程序,以便所有变量都保存在数据文件(、文本等)中,因此您可以使用较小的样板脚本打开数据文件并进行操作

它的工作空间应至少达到2 GB。台词都读出来了 直接从磁盘上的BAT文件(没有缓存 涉及)。我发表这一声明是因为:

事实上,您可以在BAT文件运行时编辑它!而且 即使文本编辑器可以重命名原始文件,也可以使用 版本,并将新版本保存在 磁盘。只要你小心不要在上面插入文字 当前正在执行的命令。台词可以是 更改/插入/删除当前正在执行的 命令和新行将被执行。我有 通常使用包含一长串
wget命令,每一个都需要几十分钟来执行。

根据微软的说法,批处理文件的大小没有限制。但是,批处理文件行不应超过127字节,否则在执行时会被截断


参见

有许多不同的限制

文件本身没有(已知)限制,而且代码块似乎是无限的

变量的最大大小为8191个字符。
显然,要分配最大大小的变量,行的限制必须更大。
甚至变量名的长度也可以是8191个字符

可以用16387个字符建立一条生产线

set <varname_8191_chars_long>=<content_8191_chars_long>
这是因为在扩展之后,该行只包含
回显端


(解析器的一个错误:解析器每8192个字符的倍数就会丢失一个字符)

CMD中任何命令行(或变量)的最大长度为。

nice。谢谢你为我测试这个:-)8k听起来很多,所以我希望这足够了。否则我可能会用这顶小帽子分割线^?不,也只是测试而已。8K似乎是一个硬限制,即使是拆分也是如此。还要注意,这是针对最后一行(使用替换的变量),因此如果%a%是长度超过4K的字符串,则echo%a%%a%将失败!在我看来,如果您需要写入几兆字节的批处理文件,那么您就错了。兆字节的批处理对我来说不是一个好的设计。你说得对。这是一个快速而肮脏的解决办法,但这是最快的方法。那是大约3.x和更早的胜利。WinXP(4.x)或更高版本增加了这些限制。
echo %======%%=====%%======%%=====% ..... %=====%END