根据多个xml文件中的值创建文件夹,并将内容复制到其中

时间:2013-05-07 23:13:18

标签: xml powershell

我很挣扎,想知道是否有人可以帮助我...

我有很多文件夹,每个文件夹中都有一个大的xml文件。我想通过我的文件夹递归并找到我的xml文件。一旦我有了这个xml,我想从xml中提取一些值并在带有版本子文件夹的Web服务器上创建一个文件夹,然后从父文件夹中将jpg文件复制到它。到目前为止,我可以获得单个xml并返回字段的所有值,但无法根据值创建文件夹。如果文件夹存在则脚本忽略会很好。我的xml看起来像这样......

DATA

  • ASSET

    • PART
      • 版本“1”
      • partnumber“ABC123”
      • CAR
        • 制作“FORD”
        • color“BLACK.JPG”
      • CAR
        • 制作“FERRARI”
        • color“RED.JPG”

所以结果应该是这样的文件夹结构

ABC123 \

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

对于帖子中数据质量差,第一次发帖而无法让它工作而道歉

1 个答案:

答案 0 :(得分: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文件。