如何使用正则表达式匹配的文件夹从一台服务器到另一台服务器进行robocopy

时间:2016-08-26 20:32:01

标签: regex powershell jenkins robocopy

我有一个构建系统,它使用robocopy将文件从一个系统复制到我们的服务器和特定路径。以下一直有效,直到引入新要求:

robocopy local\dist \\server01\somepath\dist XF *.* /E

现在,我们希望更改'dist'名称以包含构建信息。例如,'dist1','dist2','distabcd'。无论如何,重点是文件夹名称正在改变。如何告诉robocopy匹配任何以'dist'开头的名称,但要复制到远程服务器上正确的完整命名dist文件夹

robocopy local\dist* \\server01\somepath\[????] XF *.* /E

我可以选择使用PowerShell命令来执行此操作,假设它可以复制到服务器位置。我对PowerShell几乎一无所知,但欢迎任何提示。

1 个答案:

答案 0 :(得分:1)

Powershell通过' -match'提供RegEx功能。和' -contains'运营商。以下是捕获更改目录的示例:

$localDirectory = "local\dist"
$directory = "\\server01\somepath\dist"    
$keyword = "dist"
$fileDirectory = Get-ChildItem -Path $directory -Recurse

foreach ($container in $fileDirectory)
{
    # -match is one of the RegEx functions we may utilize for this operation
    # e.g dist1.. dist2.. distabc.. adist.. mynewdistrubition
    if ($container -match $keyword)
    {
        try
        {                               
            Copy-Item -Path "$($directory)\$($container)" -Destination $localDirectory -Force -Recurse
        }
        catch [System.Exception] 
        {
            Write-Output $_.Exception
        }
    }
}