我有一个源文件夹FolderSource
,其中包含过去6个月内创建的200K文件。每天都会向此文件夹添加新文件(大约10k到11k)。
如果FolderDestination
,FolderArchiveA
,FolderArchiveB
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更有效地编码?
答案 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
}
}
可能有更快的方式,但这种方式将工作。