0

私は苦労していて、誰かが私を助けることができるかどうか疑問に思っています...

多くのフォルダーがあり、それぞれに大きな xml ファイルがあります。フォルダーを再帰的に検索して、xml ファイルを見つけます。この xml を取得したら、xml からいくつかの値を取得し、バージョン サブフォルダーを使用して Web サーバー上にフォルダーを作成し、親フォルダーから jpg ファイルをコピーします。これまでのところ、単一の xml を取得してフィールドのすべての値を返すことはできますが、値に基づいてフォルダーを作成することはできません。フォルダーが存在する場合、スクリプトが無視するといいでしょう。私のxmlは次のようになります...

データ

  • 資産

      • バージョン「1」
      • 品番「ABC123」
        • 「フォード」を作る
        • カラー「BLACK.JPG」
        • 「フェラーリ」を作る
        • カラー「RED.JPG」

結果はこのようなフォルダ構造になるはずです

ABC123\

   1\
     FORD\
          black.jpg
     FERRARI\
           red.jpg

投稿のデータの質が悪く、初めて投稿したため、機能させることができなかったことをお詫びします

4

1 に答える 1

1

可能なアプローチは次のとおりです。

$xml = [xml]@'
<Data>
  <Asset>
    <Part version="1" partnumber="ABC123">
      <Car make="Ford" colour="Black.jpg"/>
      <Car make="Ferrari" colour="Red.jpg"/>
    </Part>
  </Asset>
</Data>
'@

$xmlPath = "C:\foo"
$pathRoot = "\\server\share\"
foreach ($part in $xml.Data.Asset.Part)
{
    $dir = $part.partnumber
    mkdir $pathRoot\$dir -WhatIf
    foreach ($car in $part.Car)
    {
        $dir = Join-Path $dir $car.make
        mkdir $pathRoot\$dir -WhatIf
        $colour = $car.colour
        Copy-Item $xmlPath\$dir\$colour $pathRoot\$dir\$colour -WhatIf
    }
}

$xmlPath は、xml ファイルを含むディレクトリを指します。そこからjpgファイルをコピーできると思います。

于 2013-05-08T02:41:56.327 に答える