【问题标题】:TeamCity - passing parameter values with whitespace to command lineTeamCity - 将带有空格的参数值传递到命令行
【发布时间】:2019-04-22 13:01:32
【问题描述】:

我将一些 TeamCity 参数传递给命令行构建步骤。当参数值包含空格时会出现问题,例如:

%env.TEAMCITY_BUILDCONF_NAME%  ---> My TC Project

有没有办法用其他字符(例如下划线)替换空格?

%env.TEAMCITY_BUILDCONF_NAME%  ---> My_TC_Project

【问题讨论】:

  • 命令行脚本通常可以访问环境变量。可能以这种方式重写它是有意义的。

标签: teamcity


【解决方案1】:

如果将参数括在双引号中,通常可以继续使用空格:

%program.files.dir% => C:\Program Files (x86)

可执行文件:dir

参数:"%program.files.dir%"

【讨论】:

  • 是的,我已经尝试过了,但在我的情况下它不起作用。该命令将空格作为新参数的开始。
  • 引用它应该工作。你正在运行的命令是什么?它的错误信息是什么?
  • 如果参数值本身可以包含双引号和单引号怎么办?
【解决方案2】:

我不知道如何用下划线替换空格,但我遇到了空格问题。 在 TeamCity 构建步骤中,我试图将 sqlcmd 作为 Executable with Parameters

运行
-S %sql_server% -U %sql_username% -P %sql_password% 
-i "custom_script.sql" -d "%custom_db%"
-v DealerName="%DealerName%"

其中 DealerName 是“Great Dealer Ltd”,但它不适用于空格,即使是双引号。

它通过将其设置为 自定义脚本 来解决问题

sqlcmd -S %sql_server% -U %sql_username% -P %sql_password% 
-i "custom_script.sql"  -d "%custom_db%"
-v DealerName="%DealerName%"

并且(感谢我的老板的建议)它就像魅力一样。

即使不是您问题的准确答案,它也可能对类似问题有用。

【讨论】:

    【解决方案3】:

    下面给出的字符串对我有用。

    %env.TEAMCITY_BUILDCONF_NAME%  ---> "My\ TC\ Project"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2017-05-07
      • 2019-06-24
      • 2017-06-25
      相关资源
      最近更新 更多