XP批处理文件中的行长度限制是多少?

4
在运行.bat文件时,如果命令很长(比如长度为300个字符),例如:
Some_exe "C:/Documents and Settings/Some user/Some folder1/Some folder2/Some folder3/Some folder4 ... -Some_exe_arg1="arg 1 name" -Some_exe_arg2="arg 2 name" -Some_exe_arg3="arg 3 name"  

CMD.exe处理的行大小是否有限制?我应该使用.CMD还是.BAT?有没有办法克服这个限制?谢谢!
2个回答

6

从Windows XP开始,所有版本的Windows都支持最大8191字节的批处理行长度:http://support.microsoft.com/kb/830473

通常可执行文件通过允许在文件中指定参数值来规避命令行长度限制。例如,FINDSTR有一个/G:filename选项,该选项指定包含搜索字符串的文件名。

.BAT与.CMD在行长度方面没有区别。实际上,它们之间几乎没有任何区别:https://dev59.com/43VC5IYBdhLWcg3w51ny#148991(注意-大部分质疑链接答案准确性的评论是先于答案的最新编辑版本的。链接的答案现在是正确的。)


6

最大批处理行长度的最小值为8191字节!

这意味着一行可以达到8191字节,但也有可能创建几乎无限长度的合法批处理行。

示例

echo Longline with 8191 characters.........

set "var=a"
echo UltraLongLine %var:4000chars=% %var:4000chars=% %var:4000chars=% %var:4000chars=%

echo Test <8000Chars <8000chars <8000chars .... <nul

这里的关键是,在解析后,所有行的长度都小于8192字节。

3
一个更简单有效的长行是20,000个空格后面跟着echo test。从技术上讲,你是正确的,行长度可以超过8191个字符。但我不明白这对原问题有何帮助或意义。我想,也许在某些场景下,这种技巧可能会有用处。但当我阅读这个问题时,我认为OP感兴趣的是发布解析/功能行长度。 - dbenham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接