2012-03-10 1 views
0

1) cmdlet get-member를 사용하여 파일 특성 목록을 만든 다음 마지막으로 작성한 시간순으로 정렬하는 방법?cmdlet get-member를 사용하여 파일 특성 목록을 만듭니다.

2) 그러나 (첫 번째 작업에 대한 솔루션 (두 번째 작업은 괜찮습니다) 이런 식으로해야한다고 생각합니다 모든 * .html 중에서 파일에 대한 examp 전체 크기에 대해 서로 다른 확장자 (와 파일의 총 크기)

찾기 그것은

$a=get-childitem . -filter *.html 
$n=$a.Length 
do{ 
$isnotsorted=0 
for($i=0;$i -lt ($n-1); $i++) { 
    if ((get-member $a[$i]).LastWriteTime -lt (get-member $a[$i]).LastWRiteTime){ 
     $a[$i],$a[$i+1]=` 
     $a[$i+1],$a[$i] 
     $isnotsorted=$i+1 
    } 
} 
$n=$isnotsorted 
} 
until ($n -eq 0) 
$a 
+0

@BACON이 말했듯이'Get-Member'는 객체의 속성과 메서드를 제공합니다. 이것들을 속성으로 언급하고 있습니까? 일반적으로 속성은 파일의 속성 (숨김, 읽기 전용, 아카이브 등)으로 간주됩니다. 이들은'Get-Member'가 생성하지 않는'System.IO.FileInfo' 객체의 인스턴스를 통해 액세스됩니다. –

+0

아마도 'Get-Member'라는 이름이 혼란 스럽겠습니까? 'Get-Member'는 객체의 멤버 (메서드, 매개 변수 또는 필드)의 값을 "가져 오지"않습니다. 'Get-Member'는 객체의 타입으로부터 멤버의 정의를 얻습니다. 특정 멤버의 값을 검색하려면'$ foo.Property' 구문이나'Select-Object' 나'Format- * '같은 cmdlet을 사용하면됩니다. 파일 목록에서 동적으로 커스텀 속성을 붙이지 않는다고 가정 할 때,'Get-Member'는 각 멤버의 값이 각 파일마다 다르더라도 모든 멤버에 대해 같은 멤버 정의를 반환합니다. – BACON

+2

이것은 버블 정렬을 구현하는 연습입니다. 맞습니까? 코드 스 니펫을'get-childitem '으로 변경하기를 원하지는 않는다. -filter * .html | 정렬 - 개체 - 속성 'LastWriteTime''? 왜냐하면 * .html 파일의리스트를'LastWriteTime' 속성으로 정렬 할 것이기 때문입니다. 나는 문제가'(get-member $ a [$ i]). LastWriteTime'을'$ a [$ i] .LastWriteTime'으로 변경해야한다고 생각합니다. '$ a [$ i + 1]'이 필요합니다.) 앞에서 설명한 것처럼'Get-Member'는 그렇게 작동하지 않으며 여기서는 필요하지 않습니다. 속성에 직접 액세스하십시오. – BACON

답변

5
  1. 당신은이 작업을 수행하기를 Get-Member를 사용할 필요가 없습니다) 작동하지 않습니다. 당신은 Sort-ObjectSelect-Object를 사용할 수 있습니다

    dir C:\ -Force | ? {!$_.PsIsContainer} | Sort LastWriteTime | Select FullName, Attributes 
    
  2. 당신은이 작업을 수행 Group-ObjectMeasure-Object를 사용할 수 있습니다.

    ((dir D:\Software -Force -Filter *.html | Group Extension).Group | Measure-Object -Sum Length).Sum/1MB 
    

내가 여기 당신이 Sort-Object -Property LastWriteTime를 사용하지 않는 이유는 모르겠지만 당신이 당신의 거품 정렬 코드를 해결하는 것입니다 방법이다. Get-Member은 속성 값에 액세스하는 데 사용할 올바른 cmdlet이 아닙니다.

$a = get-childitem -filter *.html 
$n = $a.Length 

do { 
    $isnotsorted = 0 
    for($i = 0; $i -lt ($n-1); $i++) { 
     if (($a[$i]).LastWriteTime -lt ($a[$i + 1]).LastWRiteTime) { 
      $a[$i] , $a[$i+1] = $a[$i+1] , $a[$i] 
      $isnotsorted = $i + 1 
     } 
    } 
    $n = $isnotsorted 
} until ($n -eq 0) 
$a 

여기에서 주목해야 할 또 다른 점은이 알고리즘의 성능이 단지 Sort-Object를 사용하는 것보다 훨씬 더 나쁜 것입니다. 내 음악 폴더에는 1355 개의 파일이 있으며 위의 내용은 83 초 내에 완료됩니다. Sort-Object을 사용하면 1.7 초가 걸립니다.

Measure-Command { 
    get-childitem D:\shares\Music -rec -filter *.m4a | Sort-Object LastWriteTime 
} 
2

파일의 속성을 표시하는 데 Get-Member이 필요하지 않습니다. 그냥 Sort-Object에 디렉토리의 내용을 다음 파이프를 얻을 Get-ChildItem를 사용 : 당신은 하위 디렉토리를 나열하는 Get-ChildItem-Recurse 매개 변수를 추가하고, Hidden 속성을 가진 파일을 나열 -Force을 추가 할 수 있습니다

Get-ChildItem -Path $path | Sort-Object -Property 'LastWriteTime' 

.

Get-ChildItem -Path $path ` 
    | Sort-Object -Property 'LastWriteTime' ` 
    | Format-Table -Property @('Attributes', 'FullName', 'CreationTime') 

Get-Member 파일이나 디렉토리에 존재하는 속성을 확인하는 데 사용할 수 있습니다 : 당신은 Format-* cmdlet으로 파이프이 모든 당신은 파일과 디렉토리에 대한 표준 포맷으로 표시 이외의 속성을 표시 할 수있는 경우 목적.

당신은 파일의 모음의 Length 특성을 추가 할 -Sum 스위치 Measure-Object을 사용할 수 있습니다

:

$htmlFiles = Get-ChildItem -Path $path -Filter '*.html'; 
$measurement = $htmlFiles | Measure-Object -Property 'Length' -Sum; 
$totalHtmlSize = $measurement.Sum; 

당신이 이런 일을 할 수있는 각 파일 형식의 전체 크기의 테이블을 생성하려면 : $path의 내용을 검색

Get-ChildItem -Path $path ` 
    | Where-Object { $_ -is [IO.FileInfo]; } ` 
    | Group-Object -Property 'Extension' ` 
    | Select-Object ` 
     @{ Name = 'Extension'; Expression = 'Name' }, ` 
     @{ Name = 'TotalSize'; Expression = { ` 
      ($_.Group | Measure-Object -Property 'Length' -Sum).Sum } ` 
     } ` 
    | Sort-Object -Property 'Extension'; 

, 그것은 단지 Extension 속성에 의해 파일, 파일 그룹을 포함하도록 필터링하는 prope와 오브젝트에 각 그룹 프로젝트 확장자에 대한 rty 및 전체 파일 크기에 대한 등록 정보를 입력 한 다음 결과를 확장자로 정렬합니다.

+0

하지만 작업은 Get-Member를 사용하는 것이 었습니다. –

+0

나는 당신이 찾고있는 것을 이해하지 못합니다. 'Get-Member'는 특정 타입에 정의 된 프로퍼티와 메소드를 검색합니다. 특정 유형의 * 인스턴스 *에 대한 속성 값을 가져 오려면 실제로 Get-ChildItem과 같은 인스턴스를 검색해야합니다. 따라서 파일 자체의 속성을 원하거나'Get-Member'를 사용하여 ['FileInfo' 클래스]에 정의 된 속성을 검색하려고합니다 (http://msdn.microsoft.com/library/system.io .fileinfo.aspx)? – BACON

+0

이 작업에서는'Get-Member' 속성 (last properties)을 찾아 속성 (lasttyetime)을 찾은 다음이 속성으로 모든 파일을 정렬해야한다고 생각합니다. 속성 목록). –

관련 문제