我有3个文件夹,/ Incoming,/ Processed和/ Temp。传入文件夹每小时更新一次新文件,目前其中包含120k +个别.zip文件。这些文件每小时都会复制到已处理的文件夹中。它们被解压缩并将记录插入到SQL表中。该表每小时删除并重新创建一次,并重新导入所有文件。这个过程开始需要很长时间。
所有文件传输当前都在cmd批处理文件中完成,使用robocopy / MIR和SQL .dtsx文件进行导入。
我正在尝试找到一种方法,在每小时复制新文件之前将传入文件夹与已处理文件夹进行比较,并将差异复制到临时文件夹,以便只将它们添加到SQL而不是每小时删除和重新创建。
任何帮助都会很棒,因为我在这个问题上花了好几个小时没有运气。
答案 0 :(得分:0)
此解决方案将比较两个文件夹(例如Incoming和Processed)并将第一个文件夹(Incoming)中的新文件复制到第三个文件夹(Temp)进行处理。
$Folder1 = (Get-ChildItem -Recurse -path "C:\Incoming")
$Folder2 = (Get-ChildItem -Recurse -path "C:\Processed")
(Diff $Folder1 $Folder2 | ? {$_.SideIndicator -eq "<="}).InputObject |
ForEach-Object {
$ItemName1 = $_;
$ItemName2 = "C:\Temp\" + $ItemName1;
Copy-Item $ItemName2 -Destination "C:\Temp" -Force
}
答案 1 :(得分:0)
您可以直接使用fc命令 例如:fc srcfile destfile> logfile
或使用ROBOCOPY