2016-05-06 9 views
0

Ich versuche, die Anzahl der Wörter pro PDF-Datei in einem Quellordner zu zählen und den Namen und die Wordcount zu einem CSV zu exportieren. Aber meine Ausgabe CSV scheint die Anzahl der PDFs (123) zu zählen, obwohl der Inhalt meines Objekts richtig scheint.Powershell Warum kann ich dieses Objekt nicht nach CSV exportieren

Snippet

$source = 'C:\Data\SCRIPTS\R\TextMining\PDFs' 
$results= @{} 
Get-ChildItem -Path $source -Filter *.pdf -Recurse | ForEach-Object{ 
    $count = Get-Content $_.FullName | Measure-Object -Word 
    $results.Add($_.FullName, $count.Words)} 
$results 
Export-Csv C:\Data\SCRIPTS\R\TextMining\PageClustering\PDFs\PGs\PGs_WC.csv -InputObject $results -notypeinformation 

ich den Dateinamen und wordcount auf der Konsole angezeigt werden können, aber das Rohr zu csv kommt mit Fehlern aus.

Ausgabe

IsReadOnly IsFixedSize IsSynchronized   Keys                Values          SyncRoot  Count 
FALSE   FALSE  FALSE System.Collections.Hashtable+KeyCollection   System.Collections.Hashtable+ValueCollection System.Object 123 

Ich lerne PS verwenden - was mache ich falsch?

Antwort

1

Bitte versuchen Sie folgendes:

$source = 'C:\Data\SCRIPTS\R\TextMining\PDFs' 
$results= @() 
Get-ChildItem -Path $source -Filter *.pdf -Recurse | ForEach-Object{ 
    $count = Get-Content $_.FullName | Measure-Object -Word 
    $results += New-Object PSObject -Property @{ 
      'Name' = $_.FullName 
      'Wert' = $count.Words 
      } 
    } 
$results 
$results | Export-Csv C:\Data\SCRIPTS\R\TextMining\PageClustering\PDFs\PGs\PGs_WC.csv -notype 
+0

großartig! Vielen Dank. Was ist der Unterschied zwischen @ {} und @() .... einer ist ein Array und einer ist ein Objekt? Ich weiß nicht, wann ich welche verwenden soll. – val

+1

@() ist ein Array und @ {} ist eine Hashtabelle. Im Gegensatz zu normalen Arrays, bei denen Sie über einen numerischen Index auf jedes Element verweisen, können die Schlüssel einer Hash-Tabelle Strings sein. – Oli

1

Da $Results eine Haschtabelle ist, möchten Sie die Elemente darin, anstatt die Hashtable selbst exportieren. Um dies zu tun, werden Sie mit dem Rohr müssen die Werte Array Export-Csv:

$results.Values |Export-Csv C:\Data\SCRIPTS\R\TextMining\PageClustering\PDFs\PGs\PGs_WC.csv -NoTypeInformation 
+0

@MathiasRJessen: Ich habe versucht, dass, aber es funktioniert nicht - ich erhalte der gleiche Fehler csv. – val

+1

Entschuldigung, habe nicht bemerkt, dass Sie eine Hashtabelle verwenden, aktualisierte Antwort –