【问题标题】:Batch : Echo Two parameters with spaceBatch : Echo 两个带空格的参数
【发布时间】:2016-05-09 09:58:01
【问题描述】:

我正在编写批处理脚本,在回显两个变量时遇到了一些问题。为此,我创建了文件 test.bat

回声 %2%

echo "调用两个参数"

回声 - %1% %2%

调用时,输出是什么:

test.bat 1235 899
899
"Calling Two Paramters"
- `12352`

现在预期的输出必须是:

1235 899

请帮忙

【问题讨论】:

  • 您希望将1235 899 视为单个参数,还是将其视为1235899 的两个参数?
  • 两个不同的参数
  • 好的...所以正确的最后一行是:echo - %~1 %~2(正如@npocmaka 已经在his answer 中指出的那样,只有一个% 用于参数,并且~ 修饰符删除潜在的周围 qouotes; 显然你的问题对他来说不够清楚 - 对我来说也是如此 - 所以他将这两个数字解释为 single 论点)......
  • 感谢您的帮助...

标签: batch-file batch-processing


【解决方案1】:

像这样改变你的 test.bat:

echo "Calling Two Paramters"

echo - %~1

然后这样称呼它:

test.bat "1235 899"

子程序和批处理文件参数只有在开头有%

带分隔符的参数需要用双引号括起来。

%~1这里的tilda是用来解引用的。

【讨论】:

  • 没有。我有两个不同的参数,因为我需要将这两个传递给调用脚本,其中第一个是我的流名称,第二个是版本。
  • @R.Sha - 那么你可以只使用echo %1 %2
【解决方案2】:

您的错误:

在批处理文件中使用参数时,没有尾随百分比字符。所以第一个参数是 %1,而不是 %1%

额外提示:

我喜欢使用 @echo off 作为批处理文件的第一行,因此命令解释器在解析(和执行)它们之前不会回显所有行。

示例:

@echo off
echo %2
echo "Calling Two Paramters"
echo - %1 %2

如果你不想要它,你可以放弃 @echo ;)

【讨论】:

    【解决方案3】:

    像这样修改脚本的最后一行:

    echo %1 %2%
    

    【讨论】:

    • 这是可行的,但由于黑客导致最后一个 % 被解释为空变量的开始。更好的是使用echo %1 %2,甚至更好的是echo %~1 %~2
    猜你喜欢
    • 2017-03-28
    • 2021-09-19
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多