首先我要说的是,我不知道这是否可行,但我希望如此。
我在 Azure Devops 中有多个作业运行“Windows 计算机文件复制”任务。 Documentation here .
在任务日志的末尾,有一个输出显示文件总数...
2019-12-06T20:42:33.2991058Z ------------------------------------------------------------------------------
2019-12-06T20:42:33.2992182Z
2019-12-06T20:42:33.2994274Z Total Copied Skipped Mismatch FAILED Extras
2019-12-06T20:42:33.2995919Z Dirs : 29 28 0 0 0 0
2019-12-06T20:42:33.2997487Z Files : 361 361 0 0 0 0
2019-12-06T20:42:33.2999056Z Bytes : 89.96 m 89.96 m 0 0 0 0
2019-12-06T20:42:33.3000612Z Times : 0:00:03 0:00:02 0:00:00 0:00:00
2019-12-06T20:42:33.3000997Z
2019-12-06T20:42:33.3002124Z
2019-12-06T20:42:33.3003761Z Speed : 31614545 Bytes/sec.
2019-12-06T20:42:33.3005534Z Speed : 1808.998 MegaBytes/min.
2019-12-06T20:42:33.3006054Z Ended : Friday, December 6, 2019 2:42:33 PM
2019-12-06T20:42:33.3006989Z
2019-12-06T20:42:33.3049176Z Copying recursively from...
这个值是否作为变量存储在任何地方?有没有人能够使用这样的日志以编程方式解析其中的信息?
最佳答案
同意大牛的任命,这对于开发者来说似乎毫无意义。但是,如果有人想要这些数据,当然可以对其进行解析。
首先我们需要知道这个任务是根据什么来编译的。我们已经在github上开放了该任务的源码:WindowsMachineFileCopyV2 。可以看到这个任务是使用RoboCopy
来实现文件复制的。
所以,现在,您的难题可以考虑为如何读取 Robocopy 输出并将其存储为变量。
<小时/>我想您已经知道似乎无法直接对此任务输出进行任何操作。因此,首先,您可以将 /log:{file path}
指定到此 Windows 计算机复制文件任务的参数中。
日志如下所示:
目前,解析出准确的值并将其存储到变量中非常容易。只需编写一个脚本来读取该值并存储它。我曾经提供过类似的solution关于如何从 shell 输出中编译出值。
此外,您可以查看此 script供更多引用。
## Create Powershell object to tally Robocopy results
$row = "" |select COPIED, MISMATCH, FAILED, EXTRAS
$row.COPIED = [int](($robo_arr[1] -split "\s+")[4]) + [int](($robo_arr[2] -split "\s+")[4])
$row.MISMATCH = [int](($robo_arr[1] -split "\s+")[6]) + [int](($robo_arr[2] -split "\s+")[6])
$row.FAILED = [int](($robo_arr[1] -split "\s+")[7]) + [int](($robo_arr[2] -split "\s+")[7])
$row.EXTRAS = [int](($robo_arr[1] -split "\s+")[8]) + [int](($robo_arr[2] -split "\s+")[8])
关于azure - 如何获取从 Azure Devops/VSTS/TFS 中的 "Windows Machine File Copy"任务复制的文件总数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59307208/