Azure Devops Server 2019的Pipeline在通过bat文件运行robocopy命令时变得失败。

问题描述 投票:0回答:1

你好啊

我创建了一个bat文件,其中包含了很多逻辑,我必须运行一个命令来完成整个bat文件的逻辑,这个命令是带有时间戳的robocopy。

我的命令。

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

@For /F "Tokens=1-5Delims=/: " %%G In (     '""%__AppDir__%Robocopy.exe" \: . /NJH 
/L|"%__AppDir__%find.exe" " 123""' )Do @Set "bdate=[%%I-%%H-%%G]-[%%J-%%K]" 

ROBOCOPY "%BUILD_SOURCESDIRECTORY%\Resources" "\\servername\Copy\%bdate%" /V

我的命令:

  • 我知道在Azure DevOps Server 2019中有一个任务为robocopy "Windows机器文件复制任务",但我不想分开任务。

  • 我知道有这么多的参数与robocopy,我们可以利用,但为了检查目的,我只用了V。

错误。

2020-04-27T04:11:04.1190482Z ##[error]Process completed with exit code 1. 2020-04- 
27T04:11:04.1206512Z ##[debug]System.Exception: Process completed with exit code 1.    at 
Microsoft.VisualStudio.Services.Agent.Worker.Handlers.ProcessHandler.RunAsync()    at 
Microsoft.VisualStudio.Services.Agent.Worker.TaskRunner.RunAsync()    at 
Microsoft.VisualStudio.Services.Agent.Worker.StepsRunner.RunStepAsync(IStep step, CancellationToken 
jobCancellationToken) 

但奇怪的是 -----> 文件夹被创建了时间戳,文件也被复制到了目的地,但是管道还是失败了。

请让我知道我们如何克服这个错误?

batch-file azure-pipelines robocopy azure-devops-server-2019
1个回答
0
投票

这更多的是为了解决你问题中代码格式化非常差的问题。

你可以把它留成一行,就像我在 我之前给你的答复.

@For /F "Tokens=1-5Delims=/: " %%G In ('""%__AppDir__%Robocopy.exe" \: . /NJH /L|"%__AppDir__%find.exe" " 123""')Do @Set "bdate=[%%I-%%H-%%G]-[%%J-%%K]"

如果为了方便阅读美化的目的,你想把线条分割成更多的线条,那么下面的两行应该就可以了。

@For /F "Tokens=1-5Delims=/: " %%G In ('%__AppDir__%Robocopy.exe \: . /NJH /L^
 ^|%__AppDir__%find.exe " 123"')Do @Set "bdate=[%%I-%%H-%%G]-[%%J-%%K]"

虽然我更喜欢这种三行分割的方式:

@Echo BUILD_SOURCESDIRECTORY contents:
@Dir "%BUILD_SOURCESDIRECTORY%"
@Echo Over and out. 
@For /F "Tokens=1-5Delims=/: " %%G In (
    '""%__AppDir__%Robocopy.exe" \: . /NJH /L|"%__AppDir__%find.exe" " 123""'
)Do @Set "bdate=[%%I-%%H-%%G]-[%%J-%%K]"
@"%__AppDir__%Robocopy.exe" "%BUILD_SOURCESDIRECTORY%\Resources" "\\servername\Copy\%bdate%" /V

请记住,如果你不进一步使用... ... %bdate%你不需要把它定义为一个变量。(根据我之前对你的回答).

@For /F "Tokens=1-5Delims=/: " %%G In ('""%__AppDir__%Robocopy.exe" \: . /NJH /L|"%__AppDir__%find.exe" " 123""')Do @"%__AppDir__%Robocopy.exe" "%BUILD_SOURCESDIRECTORY%\Resources" "\\servername\Copy\[%%I-%%H-%%G]-[%%J-%%K]" /V
© www.soinside.com 2019 - 2024. All rights reserved.