Windows Robocopy—获取复制文件的文件名并将其添加到列表中

Windows Robocopy—获取复制文件的文件名并将其添加到列表中,windows,powershell,robocopy,Windows,Powershell,Robocopy,我正在尝试将最近创建的文件夹中的特定文件复制到本地磁盘,我希望通过删除所有文件(使用robocopy复制的文件除外)来清理目标目录 $source = "\\server\Builds\Installations\1.0" $target = "\\c$\temp\Engineering\1.0" $artifactsToMirror = "*.zip*" $numberOfBuildsToMirror = 2 $doCleanUp = "true" $filesToKeep = New-Obj

我正在尝试将最近创建的文件夹中的特定文件复制到本地磁盘,我希望通过删除所有文件(使用robocopy复制的文件除外)来清理目标目录

$source = "\\server\Builds\Installations\1.0"
$target = "\\c$\temp\Engineering\1.0"
$artifactsToMirror = "*.zip*"
$numberOfBuildsToMirror = 2
$doCleanUp = "true"
$filesToKeep = New-Object System.Collections.Generic.List[System.Object]

try
{   
    if (-Not (Test-Path -PathType Container $target))
    {
       Write-Output "Creating target directory..."
       New-Item -ItemType Directory -Force -Path $target
    }

    Get-ChildItem -Path $source -Directory | Sort-Object LastWriteTime | Where-Object { 
    ($_.GetFiles().Count -gt 0) } | Select-Object -Last $numberOfBuildsToMirror | ForEach-Object `
    {
        robocopy $source\$_ $target $artifactsToMirror /NJH /NJS /FP /NS /NC /NP /NDL /W:0 | ForEach-Object { $filesToKeep.Add($_)}
    }
    #Clean up target directory
    if ($doCleanUp -eq [bool]::TrueString -and $filesToKeep.Count -gt 0)
    {
       Write-Output "Cleaning up target directory"
       Remove-Item $target\* -recurse -exclude $filesToKeep -Force
    }   
}
catch [Exception]
{
   Write-Output "Not able to mirror the builds"
   Write-Output $_.Exception
   exit 1
}

您可以将
/MIR
(镜像)命令与
robocopy
一起使用吗?我该怎么做?我只需要源文件中的特定文件。更具体地说,是“.zip”和“.zip.sha256”,或者,您可以简单地从目标文件夹中删除所有文件,然后再复制它们吗?我不希望再次复制同一个zip,它们大约为7gb,并且来自远程服务器的文件副本参差不齐,我想尽量减少不必要的副本您可以将
/MIR
(镜像)命令与
robocopy
一起使用吗?我该怎么做?我只需要源文件中的特定文件。更具体地说,.zip”和“.zip.sha256”或者,您可以简单地从目标文件夹中删除所有文件,然后再复制它们吗?我不希望再次复制同一个zip,它们大约为7gb,并且来自远程服务器的文件副本参差不齐,我希望尽量减少不必要的副本