我有一个构建系统,它使用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几乎一无所知,但欢迎任何提示。
答案 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
}
}
}