【问题标题】:Passing percent sign in a batch parameter CALL在批处理参数 CALL 中传递百分号
【发布时间】:2014-05-04 17:08:08
【问题描述】:

在 Windows 7....

这个 SO 答案对我来说似乎是错误的: Use of Percent Sign as a CMD Parameter

在 Called.bat 中

echo 1=%1

来电蝙蝠

call called.bat "percent%%sign"

结果

百分比%%sign = 百分比

"percent%%sign" = "百分比"

百分比^%符号 = 百分比

"百分比^%符号" = "百分比^%符号"

百分比%%%%sign=百分比

百分比%%%sign=百分比

"百分比%%%%符号" = "百分比"

"百分比%%%sign" = "百分比"

【问题讨论】:

  • 到底是什么问题?你能指望什么?你需要什么?
  • 我希望 echo 以百分号之类的方式响应。

标签: batch-file cmd


【解决方案1】:

调用者

@ECHO OFF
SETLOCAL

CALL qq22658604 "percent%sign"
CALL qq22658604 "percent%%sign"
CALL qq22658604 "percent%%%sign"
CALL qq22658604 "percent%%%%sign"
CALL qq22658604 percent%sign
CALL qq22658604 percent%%sign
CALL qq22658604 percent%%%sign
CALL qq22658604 percent%%%%sign

GOTO :EOF

qq22658604

@ECHO OFF
ECHO 1=%1
GOTO :EOF

结果

1="percentsign"
1="percentsign"
1="percentsign"
1="percent%sign"
1=percentsign
1=percentsign
1=percentsign
1=percent%sign

NFF。

【讨论】:

    【解决方案2】:

    当我使用second.bat

    @echo off
    echo %~1
    

    现在有两种情况。
    如果从批处理文件中调用second.bat,则调用者批处理中的CALL 行需要为
    call called.bat "percent%%%%sign"
    你可以省略引号,只要参数内没有空格

    如果您直接从 cmd 提示符调用called.bat,您可以使用
    call called.bat "percent%sign"

    【讨论】:

    • 带引号的四个百分号对我不起作用。你是在你的机器上运行的吗? ECHO 的发生有什么奇怪的地方吗?
    • @MarkRobbins 是的,我用 Win7x64 测试过,但这也应该适用于任何其他 Windows 系统
    【解决方案3】:

    好吧,这是我的错。该问题是由 JP Software 名为“Take Command”v13 的 cmd shell 软件引起的。 echo 命令的行为不同。我目前不知道如何让它正常工作。

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多