2012-08-02 3 views
3

나는 다음파일을 복사하고 "에서 CreationDate"

와 별도의 폴더에 내 모든 MTS-파일 (비디오)를 복사하고

Get-ChildItem C:\pictures -force | Group-Object extension | Sort-Object count -descending | ft count,name -auto 

내 그림 폴더에있는 모든 파일을 계산하고 기반으로 새로운 폴더를 생성

Get-ChildItem C:\pictures -force -recurse -include *.MTS | Copy-Item -Destination c:\video 

잘 작동합니다. 하지만, 어떻게하면 c:\video에 매년 폴더를 만들고 해당 파일을 복사 할 수 있습니까?

UPDATE :

셰이이 달성에 도움이되었습니다 나는 이제 다음 코드를 :

# Create a folder for each year and move the specified files to the corresponding folders 
Get-ChildItem $fromFolder -Force | 
Group-Object {$_.CreationTime.Year} | Foreach-Object { 

    # Testing to see if the folder exist 
    if(!(Test-Path $toFolder\$($_.Name))) { 
     $folder = New-Item -Path "$toFolder\$($_.Name)" Itemtype Directory -Force 
     echo "Created $toFolder\$($_.Name)" 
    } else { 
     echo "Folder $toFolder\$($_.Name) exist" 
    } 

    # Testing to see if the file exist in the target directory 
    if(!(Test-Path $_.group)) { 
     $_.group | Copy-Item -Destination $folder.FullName 
     echo "Copyied $_ to $folder" 
     } else { 
      echo "File exist" 
     } 
}  

그것은 폴더 확인을 테스트하지만, 파일에있는 모든 Test-Path를 건너 뜁니다. 어떻게 든 루프를 깰 수 있습니까? 아니면 파이프 라인을 엉망으로 만들어?

답변

4

이 시도 :

Get-ChildItem C:\pictures -Filter *.MTS -Force -Recurse | 
Group-Object {$_.CreationTime.Year} | Foreach-Object{ 
    $folder = New-Item -Path "c:\video\$($_.Name)" ItemType Directory -Force 
    $_.Group | Where-Object { -not (Test-Path "$($folder.FullName)\$($_.Name)") } | Copy-Item -Destination $folder.FullName 
} 
+0

가 대단히 셰이 감사합니다! 이 작품! 그러나 복사하고 싶습니다. 이동하지 마십시오. 폴더 나 파일이 이미 이동했는지 테스트하려고합니다 (이 스크립트는 수시로 실행됩니다.). 내 질문을 내 코드로 업데이트했습니다. 다시 고마워 Shay :) – Sune

+1

파일을 복사하려면 Move-Item을 Copy-Item으로 바꿉니다. 코드를 업데이트합니다. Desination 경로에 존재하지 않는 파일 만 전달하는 (파일 이름으로 테스트 한) Where-Object도 추가했습니다. –

+0

대단히 감사합니다! 환상적! (나는 copy-item에 대해 알고있다. 나는 단지 당신보다 잘 알고있다.) 내 스크립트가 100GB 이상의 데이터를 스캔하고 있으며 어떤 종류의 상태를 표시하려고하는데 스크립트가 어떻게 실행되는지 혼란 스럽다. .. 모든 디렉토리를 스캔 한 다음 결과를 파이프 라인으로 전달하고 각 객체를 foreaching합니까? 화면 상태를 어떻게 적절하게 만들 수 있습니까? Shay, Powershell을 배우는 데있어서 나의 최고의 선생님 중 한 명이었습니다. :) – Sune

관련 문제