2014-09-18 2 views
0

원본 폴더에서 대상 폴더로 항목을 복사하는 아주 기본적인 powershell 복사 스크립트가 있습니다. 그러나 이것은 너무 많은 데이터를 이동하고 있으며, 파일이 무시 될 수 있도록 파일 이름이 이미 있는지 확인하고 싶습니다. 나는 만든 날짜/체크섬/등을 확인하는 것만 큼 복잡한 작업이 필요하지 않습니다.항목이 이미 존재하지 않으면 원본에서 대상으로 복사합니다.

현재이의 라인을 따라입니다 : 내가 테스트 경로 cmdlet을 추가 할 필요가 상상하는 것

Copy-Item source destination -recurse 
Copy-Item source2 destination2 -recurse 

,하지만 난 그것을 구현하는 방법을 확실 해요.

답변

3

언제든지 ROBOCOPYPowerShell에서 호출 할 수 있습니다.

robocopy /xc /xn /xo source destination 

이 만 대상 폴더에없는 그 파일을 복사합니다 :

은/XC (변경 제외)/XN (새로운 제외) 및/XO (세 제외) 플래그를 사용합니다. 더 많은 옵션 형 robocopy /?

+0

+1 작업에 적합한 도구 사용. –

3

내가 Robocopy 이런 식으로 뭔가를위한 최고의 도구입니다 동의 동안

, 나는 그들이 무엇을 요구 고객을 제공에 대한 모든이야 그것은 흥미로운 PowerShell을 운동이었다.

이 스크립트는 요청한대로 수행해야합니다. 대상에 원본이없는 경우에만 원본에서 대상으로 파일을 복사하십시오. 귀하의 예에서 -recurse 옵션을 사용했기 때문에 대상 폴더의 파일 이름을 테스트하는 것보다 코딩이 약간 더 복잡해졌습니다.

$Source = "C:\SourceFolder" 
$Destination = "C:\DestinationFolder" 

Get-ChildItem $Source -Recurse | ForEach { 
    $ModifiedDestination = $($_.FullName).Replace("$Source","$Destination") 
    If ((Test-Path $ModifiedDestination) -eq $False) { 
     Copy-Item $_.FullName $ModifiedDestination 
     } 
    } 
+0

고마워,하지만 이건 나를 위해 작동하지 않았다. 내 구체적인 상황은 대상 폴더에 이미 하위 항목이있는 폴더가 있었고이 스크립트는 다른 폴더에 해당 파일을 복사하지 못했습니다. 즉, 원본과 대상 모두에 "폴더/기타 폴더"가 있습니다. 대상 폴더에는 하나의 하위 항목이 있었지만 같은 폴더의 소스 파일은 복사되지 않았습니다. – Marcel

0
$exclude = Get-ChildItem -recurse $dest 
Copy-Item -Recurse $file $dest -Verbose -Exclude $exclude 
와이 하 리의 게시물의 오프
+1

OP와 향후 독자에게 유용한 답변을 제공하므로 코드와 함께 일부 상황/설명을 포함하는 것이 좋습니다. – EJoshuaS

0

건물, 여기에 나를 위해 일한 예입니다 : 이것은 제외 할 목록을 작성

$Source = "<your path here>" 
$Dest = "<your path here>" 
$Exclude = Get-ChildItem -recurse $Dest 

Get-ChildItem $Source -Recurse -Filter "*.pdf" | Copy-Item -Destination $Dest -Verbose -Exclude $Exclude 

, 소스 디렉토리 및 하위에 다음 사본 어떤 PDF - ... 기존 파일을 제외하고 하나의 폴더에 의 대상 디렉토리. 다시 말하지만, 이것은 나의 필요에 의한 예이지만, 당신의 것과 유사합니다. 마음의 내용에 맞게 조정할 수 있어야합니다.

관련 문제