当 AzureDevops 批处理文件中有空格时如何连接两个变量
how to concatenate two variables when one has spaces in it in AzureDevops batch file
我的 ps 脚本中有这个输入。我正在传递 $(Build.ArtifactStagingDirectory)
系统变量以获取输入 %1
中的路径。该路径有空格,即 E:\Build Agents\Agent2\_work\a
。我需要将它与其他路径连接起来,但我做不到。
set BuildDrop=%1
set Directory=%BuildDrop% + "\adapters\bin"
这是我的输出,这是不正确的,因为 Directory
应该类似于 E:\Build Agents\Agent2\_work\a\adapters\bin
。如何解决?
set BuildDrop="E:\Build Agents\Agent2\_work\a"
set Directory="E:\Build Agents\Agent2\_work\a" + "\adapters\bin"
我的构建管道中的任务是这样的
Task : Batch script
Description : Run a Windows command or batch script and optionally allow it to change the environment
Version : 1.1.10
我们可以在 Azure DevOps 中使用 powershell 任务连接两个变量。
示例:
Write-Host "Build.ArtifactStagingDirectory is $(Build.ArtifactStagingDirectory)"
Write-Host "Build.ArtifactStagingDirectory is $(Build.ArtifactStagingDirectory)\adapters\bin"
结果:
另外,我找到了一个similar issue,也请查收。
更新1
在 Azure DevOps 管道中使用 power shell 脚本
$testpath1 = "E:\Build Agents\Agent2\_work\a"
$testpath2 = "\adapters\bin"
Write-Host "path is $($testpath1)$($testpath2)"
结果:
使用本地电源shell
结果:
更新2
.bat 文件
set testpath1=E:\Build Agents\Agent2\_work\a
set testpath2=\adapters\bin
set newpath=%testpath1%%testpath2%
echo %newpath%
流水线结果:
您可以使用它来创建包含您的路径的 Azure DevOps 变量
powershell: |
$directory = $(Build.ArtifactStagingDirectory)
$newDirectory = $directory + "\adapters\bin"
Write-Host "##vso[task.setvariable variable=testvar]$newDirectory "
如果您需要在 powershell 脚本中设置变量
$BuildDrop=$args[0]
$Directory=$BuildDrop + "\adapters\bin"
Here 你有一篇关于如何在 powershell 中使用参数的文章。
你可以试试这个:
set BuildDrop=%1
set Directory= %BuildDrop%\adapters\bin
echo %Directory%
示例输出
这是串联代码。
%BuildDrop%\adapters\bin
在我上面的示例中,我尝试使用批处理连接 C:\Users\svijay\Desktop & \adapters\bin脚本
输出:C:\Users\svijay\Desktop\adapters\bin
更新:
@echo off
set BuildDrop=%1
set Directory= %BuildDrop%\adapters\bin
set Directory= %Directory:"=%
echo %Directory%
如果您有space,您可以提供“”来提供输入。
在您的代码中,您可以删除双引号。
%Directory:"=% - 从字符串文字中删除双引号。
示例输出:
我找到了解决方案。由于我的 %1
有 space 我需要在分配之前删除撇号。我使用 ~
变量做到了。工作代码如下所示。
set "BuildDrop=%~1"
set "Directory=%BuildDrop%\adapters\bin"
我的 ps 脚本中有这个输入。我正在传递 $(Build.ArtifactStagingDirectory)
系统变量以获取输入 %1
中的路径。该路径有空格,即 E:\Build Agents\Agent2\_work\a
。我需要将它与其他路径连接起来,但我做不到。
set BuildDrop=%1
set Directory=%BuildDrop% + "\adapters\bin"
这是我的输出,这是不正确的,因为 Directory
应该类似于 E:\Build Agents\Agent2\_work\a\adapters\bin
。如何解决?
set BuildDrop="E:\Build Agents\Agent2\_work\a"
set Directory="E:\Build Agents\Agent2\_work\a" + "\adapters\bin"
我的构建管道中的任务是这样的
Task : Batch script
Description : Run a Windows command or batch script and optionally allow it to change the environment
Version : 1.1.10
我们可以在 Azure DevOps 中使用 powershell 任务连接两个变量。 示例:
Write-Host "Build.ArtifactStagingDirectory is $(Build.ArtifactStagingDirectory)"
Write-Host "Build.ArtifactStagingDirectory is $(Build.ArtifactStagingDirectory)\adapters\bin"
结果:
另外,我找到了一个similar issue,也请查收。
更新1
在 Azure DevOps 管道中使用 power shell 脚本
$testpath1 = "E:\Build Agents\Agent2\_work\a"
$testpath2 = "\adapters\bin"
Write-Host "path is $($testpath1)$($testpath2)"
结果:
使用本地电源shell
结果:
更新2
.bat 文件
set testpath1=E:\Build Agents\Agent2\_work\a
set testpath2=\adapters\bin
set newpath=%testpath1%%testpath2%
echo %newpath%
流水线结果:
您可以使用它来创建包含您的路径的 Azure DevOps 变量
powershell: |
$directory = $(Build.ArtifactStagingDirectory)
$newDirectory = $directory + "\adapters\bin"
Write-Host "##vso[task.setvariable variable=testvar]$newDirectory "
如果您需要在 powershell 脚本中设置变量
$BuildDrop=$args[0]
$Directory=$BuildDrop + "\adapters\bin"
Here 你有一篇关于如何在 powershell 中使用参数的文章。
你可以试试这个:
set BuildDrop=%1
set Directory= %BuildDrop%\adapters\bin
echo %Directory%
示例输出
这是串联代码。
%BuildDrop%\adapters\bin
在我上面的示例中,我尝试使用批处理连接 C:\Users\svijay\Desktop & \adapters\bin脚本
输出:C:\Users\svijay\Desktop\adapters\bin
更新:
@echo off
set BuildDrop=%1
set Directory= %BuildDrop%\adapters\bin
set Directory= %Directory:"=%
echo %Directory%
如果您有space,您可以提供“”来提供输入。 在您的代码中,您可以删除双引号。
%Directory:"=% - 从字符串文字中删除双引号。
示例输出:
我找到了解决方案。由于我的 %1
有 space 我需要在分配之前删除撇号。我使用 ~
变量做到了。工作代码如下所示。
set "BuildDrop=%~1"
set "Directory=%BuildDrop%\adapters\bin"