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

问题描述:

我有3个文件夹,/ Incoming,/ Processed和/ Temp。传入文件夹每小时更新一次新文件,目前在其中包含120k +个人.zip文件。每小时将这些文件复制到处理的文件夹中。在那里它们被解压缩并且记录被插入到SQL表中。表格每小时都会丢弃并重新创建,并且所有文件都会重新导入。这个过程开始需要很长时间。比较Windows中第三个文件夹中的两个文件夹和列表差异

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

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

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

+0

我想尝试powershell,我有这个到目前为止,但它复制所有文件从传入到临时。 $ Folder1 =(gci“C:\ CompareTest \ Incoming”)。FullName $ Folder2 =(gci“C:\ CompareTest \ Processed”)。FullName (Diff $ Folder1 $ Folder2 |?{$ _。SideIndicator -eq“ gbdev97

+0

请注意*不是免费的代码/脚本编写服务!请分享您迄今为止所尝试的内容,并告诉我们您卡在哪里!阅读[旅游]并了解如何使用本网站! – aschipfl

+0

道歉aschipfl。我是一名初学者,并不确定我出错的地方。我应该更清楚一点。我在Powershell中有解决方案,并将其提供给任何需要它的人。 – gbdev97

该解决方案将比较两个文件夹(例如传入和处理)并将第一个文件夹(传入)中的新文件复制到第三个文件夹(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 
}