xp批处理文件中的行长限制?

Posted

技术标签:

【中文标题】xp批处理文件中的行长限制?【英文标题】:Line length limit in xp batch file? 【发布时间】:2012-03-23 10:56:32 【问题描述】:

在 .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? 有什么办法可以克服这个限制吗?

谢谢!

【问题讨论】:

【参考方案1】:

最大批处理行长度的最小值是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字节

【讨论】:

更简单的有效长行是 20,000 个空格,后跟 echo test。从技术上讲,您是正确的,行长可以超过 8191 个字符。但我看不出这有什么帮助,也不符合原始问题的精神。我想在某些情况下这个技巧可能有用。但是当我阅读这个问题时,我认为它是 OP 感兴趣的后解析/功能行长度。【参考方案2】:

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

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

.BAT 与 .CMD 在行长方面没有区别。事实上,它们之间几乎没有任何区别:https://***.com/a/148991/1012053。 (注意 - 大多数质疑链接答案准确性的 cmets 早于答案的最新编辑版本。链接答案现在是正确的。)

【讨论】:

以上是关于xp批处理文件中的行长限制?的主要内容,如果未能解决你的问题,请参考以下文章

替换多个文件中的多行长文本(notepad++ 或其他解决方案)

如何使用消息队列在 Node JS 中执行长事件处理?

Prebuild 事件在 Windows 7 中有效,在 XP 中失败

如何从 Windows XP 的批处理文件中设置处理器关联?

IF EXIST C:\directory\ goto a else goto b 问题 windows XP 批处理文件

SQL Server使用xp_cmdshell提示“不是内部或外部命令,也不是可运行的程序 或批处理文件”