1

Windows 7 PC で、数百の xml ファイルに含まれるデータから単一のカンマ区切りのテキスト ファイルを生成しようとしています。各 xml ファイルは独自の一意の名前のフォルダーに含まれていますが、xml ファイルの各インスタンスのファイル名は同じ「report.xml」です。

より明確にするために、フォルダー/ファイル構造は次のようになります。

H:\Main_Folder\Folder_1\report.xml
H:\Main_Folder\Folder_2\report.xml
H:\Main_Folder\Folder_3\report.xml
...

xml ファイルには多くのデータが含まれていますが、私が関心を持っているのは、たまたま測定値であるいくつかのデータ項目だけです。最終的に、私が望む出力は、フォルダーごとに、フォルダー名と xml ファイルからの 2 つの測定値をリストするテキスト ファイルです。

folder_1 , measurement_1 , measurement_2
folder_2 , measurement_1 , measurement_2
folder_3 , measurement_1 , measurement_2
...

任意のフォルダー内で、次の PowerShell コードを使用して、単一の xml ファイルから必要な値を取得できます。

$xml = [xml](get-content report.xml)
$xml.Measurement[0].Value.'#text' + " , " + $xml.Measurement[1].Value.'#text'

上記のコードは次を返します。

measurement_1 , measurement_2

また、次の PowerShell コードを使用して、各フォルダーを移動し、フォルダー名を出力することもできます。

PS H:\Main_Folder> Get-ChildItem Report.xml -Recurse | Split-Path -parent

実行すると、次のようになります。

folder_1
folder_2
folder_3
...

これらすべてを連携させて目的のテキスト ファイルを生成する方法を理解するために、助けが必要です。ご協力ありがとうございました。

4

1 に答える 1

0

このようなもの

ls h:\main_folder -filter "report.xml" -recurse|%{
    [xml]$xml=gc $_.FullName
    $_.DirectoryName+","+$xml.Measurement[0].Value.'#text' + " , " + $xml.Measurement[1].Value.'#text' |out-file c:\temp\output.csv -Append
}
于 2013-01-27T10:42:32.090 に答える