2017-01-10 6 views
0

/Incoming,/Processed 및/Temp이라는 세 개의 폴더가 있습니다. 들어오는 폴더는 매시간 새로운 파일로 업데이트되며 현재 120k + 개의 개별 .zip 파일이 있습니다. 매시간 이러한 파일은 처리 된 폴더에 복사됩니다. 압축이 해제되고 레코드가 SQL 테이블에 삽입됩니다. 테이블은 매시간 Dropped and Recreated되고 모든 파일은 다시 임포트됩니다. 이 프로세스는 오랜 시간이 걸리기 시작했습니다.두 번째 폴더와 Windows의 세 번째 폴더의 목록 차이점을 비교하십시오.

모든 파일 전송은 현재 가져 오기를 위해 robocopy/MIR 및 SQL .dtsx 파일을 사용하여 cmd 배치 파일에서 수행됩니다.

새 파일을 매시간 복사하기 전에 들어오는 폴더와 처리 된 폴더를 비교하는 방법을 찾고 임시 폴더에 차이를 복사하여 매시간을 삭제하고 다시 만드는 대신 SQL에 추가합니다 .

아무런 도움없이이 단일 문제에 많은 시간을 할애 해 주시면 도움이 될 것입니다.

+0

나는 powershell을 사용하고 있는데, 지금까지 가지고 있지만 입력에서 임시로 모든 파일을 복사합니다. FullName $ Folder2 = (gci "C : \ CompareTest \ Processed") 전체 이름 (Diff $ Folder1 $ Folder2 |? {$ SideIndicator -eq " <= "}). InputObject | ForEach- 개체 { 복사 항목 $ _ - 도착 "C : \ CompareTest \ Temp"- 포스 } – gbdev97

+0

StackOverflow는 무료 코드/스크립트 작성 서비스가 아닙니다. 지금까지 시도한 것을 나눠주고 어디에 갇혀 있는지 말해주십시오! [둘러보기]를 읽고이 사이트를 사용하는 방법을 배우십시오! – aschipfl

+0

사과 죄송합니다. 나는 초보자이며 어디서 잘못되었는지 확신하지 못했습니다. 나는 그것을 분명하게해야했다. 나는 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 
}