我们如何在 bat 脚本中使用 ROBOCOPY 时使用 Azure DevOps 服务器 2019 的预定义变量

How we can use Azure DevOps server 2019's Predefined variable while using ROBOCOPY in bat script

我创建了一个批处理脚本,在这个脚本中我想使用 Build.SourcesDirectory 变量。

这是批处理脚本:

ROBOCOPY $(Build.SourcesDirectory)\myfoldername \servername\destinationfolder\Copy /V

也试过这个:

ROBOCOPY "$(Build.SourcesDirectory)\myfoldername" "\servername\destinationfolder\Copy" /V

但是出现错误并且它也没有采用路径

这是我的管道输出

ROBOCOPY::     Robust File Copy for Windows                              

Source : E:\DevOps\Agent\vsts-agent-win-x64-2.144.2\_work\s$(Build.SourcesDirectory)\myfoldername
Dest : \servername\destinationfolder\Copy

 Files : *.*

Options : *.* /V /DCOPY:DA /COPY:DAT /R:1000000 /W:30

注意:我知道有一个任务“Windows Machine File Copy task

我有一个执行许多任务的 bat 文件,其中一项任务就是这个。

任何人都有想法,我们如何实现?

您正在重新发明轮子。使用 Windows 机器文件复制任务(对于 Windows)或非 Windows 机器的通过 SSH 复制文件任务。

此问题通常发生在无法识别变量时。在 UNIX 系统(MacOS 和 Linux)上,环境变量的格式为 $NAME。在 Windows 上,批处理格式为 %NAME%,PowerShell 格式为 $env:NAME

系统和用户定义的变量也会作为您平台的环境变量注入。当变量变成环境变量时,变量名变成大写,句点变成下划线。例如,变量名 any.variable 变为变量名 $ANY_VARIABLE.

检查以下在管道中使用变量的批处理脚本示例:

@echo off
echo BUILD_SOURCESDIRECTORY contents:
@dir %BUILD_SOURCESDIRECTORY%
echo Over and out.