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++ 或其他解决方案)
Prebuild 事件在 Windows 7 中有效,在 XP 中失败
如何从 Windows XP 的批处理文件中设置处理器关联?
IF EXIST C:\directory\ goto a else goto b 问题 windows XP 批处理文件