2012-08-08 5 views
0

powershell 스크립트를 사용하여 코드 수를 계산하려고합니다.해시 테이블의 끝에 키/값 쌍을 추가하는 방법은 무엇입니까?

그물에 스크립트가 있으며 끝에 총계를 추가하려고합니다.

나는 마지막에 열

$ CountHash.Add

("총", $ 총)

을 추가했습니다.

Param([string]$path, 
    [string]$outputFile, 
    [string]$include = "*.*", 
    [string]$exclude = "") 

Clear-Host 

$Files=Get-ChildItem -re -in $include -ex $exclude $path 
[email protected]{} 
$Total=0 
Foreach ($File in $Files) { 
    #Write-Host "Counting $File.FullName" 
    $fileStats = Get-Content $File.FullName | Measure-Object -line 
    $linesInFile = $fileStats.Lines 
    $CountHash.Add($File.FullName,$linesInFile) 

    $Total += $linesInFile 
} 

$CountHash.Add("Total",$Total) 
$CountHash 

그러나 $ CountHash를 표시하면 "Total"키가 중간에 표시됩니다. 끝에 Add를 추가하면 끝에 Add가 추가되지 않습니다.

해시 테이블 끝에 키/값 쌍을 추가하는 방법은 무엇입니까?

업데이트 :이 해시 테이블을 CSV 파일로 내보내지만 총 줄이 중간에오고 있습니다.

답변

3

합계를 표시하는 것으로 가정하면 해시 집합에 추가 할 필요가 없습니다. 라인을

$CountHash.Add("Total",$Total) 

를 제거하고 귀하의 질문에 대답하기 위해 마지막 줄

Write-Host "Total: $Total" 
+0

내 질문이 업데이트되었습니다. 미안하지만 그냥 표시하고 있는게 아닙니다. – Samselvaprabu

1

등이 추가 , 당신은 추가 방법을 사용하여, @Kenned가 그랬던 것처럼, 나에 의해 새로운를 만드는 것을 할 수 키를 지정하여 다음과 같이 지정하십시오.

$CountHash.Total = $Total 

그러나 해시 테이블 대신 사용자 지정 개체를 사용하는 것이 더 간단합니다.

Get-ChildItem -Path $path -Include $include -Exclude $exclude -Recurse | 
Select-Object FullName, @{Name='LineCount';Expression={ (Get-Content $_.FullName | Measure-Object -Line).Lines}} | 
Export-Csv .\files.csv 
0

내가 이런 식으로 할 거라고 :

$ CountHash + = @ {합계 = $ 총}

1

해시 테이블이 그 값의 순서를 유지하지 않습니다. 순서가 비슷한 데이터 구조가 필요하면 System.Collection.Specialized.OrderedDictionary을 사용해보십시오. 귀하의 예는 다음과 같습니다.

$Files=Get-ChildItem -re -in $include -ex $exclude $path 
$CountHash= New-Object System.Collections.Specialized.OrderedDictionary # CHANGED 
$Total=0 
Foreach ($File in $Files) { 
    #Write-Host "Counting $File.FullName" 
    $fileStats = Get-Content $File.FullName | Measure-Object -line 
    $linesInFile = $fileStats.Lines 
    $CountHash.Add($File.FullName,$linesInFile) 

    $Total += $linesInFile 
} 

$CountHash.Add("Total",$Total) 
$CountHash 
관련 문제