比较Windows中第三个文件夹中的两个文件夹和列表差异

时间:2017-01-10 05:29:35

标签: cmd robocopy

我有3个文件夹,/ Incoming,/ Processed和/ Temp。传入文件夹每小时更新一次新文件,目前其中包含120k +个别.zip文件。这些文件每小时都会复制到已处理的文件夹中。它们被解压缩并将记录插入到SQL表中。该表每小时删除并重新创建一次,并重新导入所有文件。这个过程开始需要很长时间。

所有文件传输当前都在cmd批处理文件中完成,使用robocopy / MIR和SQL .dtsx文件进行导入。

我正在尝试找到一种方法,在每小时复制新文件之前将传入文件夹与已处理文件夹进行比较,并将差异复制到临时文件夹,以便只将它们添加到SQL而不是每小时删除和重新创建。

任何帮助都会很棒,因为我在这个问题上花了好几个小时没有运气。

2 个答案:

答案 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