文件复制如果存在轻微扭曲

时间:2017-11-21 23:58:54

标签: c# .net powershell xcopy

我有一个源文件夹FolderSource,其中包含过去6个月内创建的200K文件。每天都会向此文件夹添加新文件(大约10k到11k)。

如果FolderDestinationFolderArchiveAFolderArchiveB

中不存在过去30天内创建的文件,我需要将其复制到FolderArchiveC

这是我的算法

1. Get one Filename from SourceFolder where CreatedDate > CurrentDate - 30
2. If Filename Exists in FolderArchiveA go to step 6
3. If Filename Exists in FolderArchiveB go to step 6
4. If Filename Exists in FolderArchiveC go to step 6
5. Copy File defined in FileName to FolderDestination
6. If there are more files to be processed, go to Step 1

我是用C#编写的,但是我要去FBAF(想想RBAR,但有文件)。执行需要40多分钟。

有没有其他方法可以使用Powershell或XCopy更有效地编码?

1 个答案:

答案 0 :(得分:2)

在PowerShell中快速拼凑:

#Requires -Version 3

$FolderSource = Get-ChildItem -Path 'C:\Source' -File |
    Where-Object { $PSItem.CreationTime -gt (Get-Date).AddDays(-30) }
$FolderDestination = 'C:\Destination'
$Archives = @((Get-ChildItem -Path @('C:\ArchiveA','C:\ArchiveB','C:\ArchiveC') -File |
    Select-Object -ExpandProperty 'Name').ToUpper() |
    Sort-Object |
    Get-Unique)

ForEach ($File in $FolderSource)
{
    If ($File.Name -notin $Archives)
    {
        $File | Move-Item -Destination $FolderDestination
    }
}

可能有更快的方式,但这种方式将工作