windows - 如果字符串超过 6 个空格,则将其作为参数从 bat 传递时会被截断

标签 windows string dos truncate arguments

平台:Windows 7、Windows XP 软件:DOS

我知道命令行长度限制,但我从未经历过这样的事情”。 我有 doskey 命令将参数/参数传递给 vbs 脚本,并且我确定如果我尝试传递包含超过 6 个空格的空格的字符串 - 第 6 个空格以外的所有内容都会被截断。这是已知的限制吗??

这是 doskey 的样子:

set scripts=C:\Windows\Scripts\    
doskey tt=@echo off $t cscript //NoLogo %scripts%tt.vbs %scripts% $1 $2 $t @echo on

现在您可以打开批处理并通过输入简单的字符串来测试它:

tt + "1 2 3 4 5 6 7 8 9"

结果将是:

1 2 3 4 5 6

长度无关紧要,我可以用任何其他字符串测试它,它会在第 6 个空格后被截断。

有人知道或知道解决方案吗?

最佳答案

我实际上没有任何解释,但有一个解决方法:

使用单引号:doskey 似乎不考虑双引号(或者更可能被 cmd 解析),因此它使用空格将值拆分为 args。

我认为第 6 个空间限制来自 doskey 停在 9 个参数 (%1-%9) 并且您达到了限制。 您的 6 个数字、+ 号、%scripts% args 和脚本本身构成 9

关于windows - 如果字符串超过 6 个空格,则将其作为参数从 bat 传递时会被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637146/

相关文章:

python - 打开同一个注册表两次?

windows - 在 Win XP 命令行中同时将输出重定向到多个文件和标准输出

c++ - 驱动器号上的 FindFiles 失败但通过路径

java - 如何限制用户只能在 java JTextField 中输入一个空格键

windows - 如何连接 Windows 批处理文件的命令输出

cmd - 带有空格和通配符的路径

Python sendto() 不适用于 3.1(适用于 2.6)

javascript - JavaScript 中字符串的原型(prototype)属性在哪里?

C# 正则表达式替换如何将文本附加到每行的末尾(C#)

assembly - 使用 movsb 从 VRAM 复制?