【问题标题】:string gets truncated when passing it as parameter from bat if it has more than 6 spaces如果字符串超过 6 个空格,则从 bat 将其作为参数传递时字符串会被截断
【发布时间】:2011-10-02 00:04:12
【问题描述】:

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

我知道命令行长度限制,但我从未经历过这样的事情”。 我有将参数/参数传递给 vbs 脚本的 doskey 命令,并且我确定如果我尝试传递包含超过 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 个空格后被截断。

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

【问题讨论】:

    标签: windows string dos truncate arguments


    【解决方案1】:

    其实我没有解释,但有一个解决方法:

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多