Azure Ошибка конвейера Devops Server 2019 при выполнении команды robocopy через bat-файл - PullRequest
0 голосов
/ 27 апреля 2020

Здравствуйте,

Я создал файл bat, в котором много логов c, среди них есть одна команда, которую я должен выполнить, чтобы завершить все логи c файла bat , команда является robocopy с отметкой времени.

MY Команды:

@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 задача копирования машинного файла", но я не хочу разделять задачи.

  • Я знаю, что существует так много аргументов с Робокопия, которую мы можем использовать, но для проверки я использовал только /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) 

Но странная папка ----> создается с отметкой времени, и файлы также копируются в место назначения, но тем не менее конвейер не работает.

Пожалуйста, дайте мне знать, как мы можем преодолеть эту ошибку?

1 Ответ

0 голосов
/ 27 апреля 2020

Это скорее решение для исправления очень плохого форматирования кода в вашем вопросе.

Вы могли бы оставить его одной строкой, как я делал в в моем предыдущем ответе .

@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]"

Хотя эти три строки split будет моим предпочтительным стилем:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...