2017-02-23 7 views
2

을 -Include에 적용되지 않습니다카운트는 내가 스크립트 다음 한 JPG

$Extension = "*.jpg" 
Get-ChildItem -Path 'C:\Users\DAVID\Documents\Test' -Directory | ForEach-Object { 
    $FilesInFolder = @($_ | Get-ChildItem -Recurse -Include $Extension -File -Force) 

    $FileSize = $FilesInFolder | Measure-Object -Property Length -Sum | 
       Select -ExpandProperty Sum 
    $FileSize = "{0:N2}" -f ($FileSize/1MB) + " MB" 

    $NumFiles = $FilesInFolder.Count 
} 

그러나 항상 폴더에있는 파일과 .EXE을 .ZIP 포함 모든 계산합니다. 여기서 내가 뭘 잘못하고 있니? .jpg 파일 만 집계하려면 어떻게해야합니까? 워드 프로세서가이 문제에 조금 불분명하지만 의심이기 때문에,

$FilesInFolder = @($_ | Get-ChildItem -Recurse -Include $Extension -File -Force) 

답변

2

나는 이것을 완전히 설명 할 수 없다 : 나는 그것을 할 수있는이 줄 뭔가를 가지고 생각하고 있지만 해결책을 찾을 수 없습니다 권리. 명시 적 경로를 지정

  1. 사용 -Filter 대신 -Include

    $FilesInFolder = @($_ | Get-ChildItem -Recurse -Filter $Extension -File -Force) 
    
  2. 대신 입력 오브젝트

    $FilesInFolder = @(Get-ChildItem -Path $_.FullName -Recurse -Include $Extension -File -Force) 
    
를 사용 : 당신은 올바른 결과를 얻기 위해 적어도 두 가지 간단한 방법이있다

특히 두 번째 버전에서는 어쩌면 버그 (또는 적어도 아주 이상한 행동) Get-ChildItem

+0

또는 어디서 객체를 사용할 수 {$ _ 확장 -eq ".JPG"를.} –

1

나는 문제가 $ _ | Get-ChildItem은 Path 속성에 파이프되는 개체의 경로가 아닙니다 (대신 $ _에 PSPath라는 속성이 있으므로).

그러나이 작동하는 것 같다 :

$Extension = "*.jpg" 

Get-ChildItem -Path 'C:\Users\ab73541\Documents\' -Directory | ForEach-Object { 

$FilesInFolder = @(Get-ChildItem $_.PSPath -Recurse -Include $Extension -File -Force) 

$FileSize = $FilesInFolder | Measure-Object -property length -Sum | Select -ExpandProperty Sum 
$FileSize = "{0:N2}" -f ($FileSize/1MB) + " MB" 

$NumFiles = $FilesInFolder.Count }