2017-01-10 30 views
0

我有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「 <=「})。InputObject | ForEach-Object {__Destination「C:\ CompareTest \ Temp」-Force } – gbdev97

+0

請注意StackOverflow不是免費的代碼/腳本編寫服務!請分享您迄今爲止所嘗試的內容,並告訴我們您卡在哪裏!閱讀[旅遊]並瞭解如何使用本網站! – aschipfl

+0

道歉aschipfl。我是一名初學者,並不確定我出錯的地方。我應該更清楚一點。我在Powershell中有解決方案,並將其提供給任何需要它的人。 – gbdev97

回答

0

該解決方案將比較兩個文件夾(例如傳入和處理)並將第一個文件夾(傳入)中的新文件複製到第三個文件夾(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 
} 
相關問題