gpt4 book ai didi

xml - 在Powershell中循环遍历子文件夹

转载 作者:行者123 更新时间:2023-12-03 00:49:51 25 4
gpt4 key购买 nike

嗨,我对Powershell还是很陌生,但是我设法编写了该脚本,该脚本完全可以实现我想要的功能,但是我必须遍历多个文件夹,并且想知道是否有可能,因为我似乎找不到解决方案。

cd E:\Project_Data\Data_part1
$files = Get-ChildItem "E:\Project_Data\Data_part1\"*.xml


$MasterArray = @()
$MasterArray = "" | Select Entries
$ConcatEntries = @()
foreach ($file in $files)
{

$MasterArray.Entries += -Join "|$|"

[xml]$XMLfile = gc $file


$Entries = $XMLfile.InsuranceClaim.InfoFromVet.AnimalClinicalHistory.Entry
$ConcatEntries = @()
foreach ($Entry in $Entries)
{
$ConcatEntries += "E:\Project_Data\Data_part1\"+$file + "|^|" + $Entry.Date
+ "|^|" + $Entry.Time + "|^|" + $Entry.EnteredBy + "|^|" + $Entry.TextEntry
}

$MasterArray.Entries += $ConcatEntries -Join "|$|"

}

$MasterArray | Export-Csv -NoType "C:\Desktop\out.csv"

您可能会看到,它占用了输入的xml文件的一个节点,并将一个重复的节点输出到一个csv文件。我希望实现类似以下内容的方法,但是不确定如何定义$ folders变量。抱歉,如果您遇到了一些麻烦,请在此先感谢您的建议或帮助。
 foreach($folder in $folders)
{
cd $folder
$files = Get-ChildItem $folder*.xml


$MasterArray = @()
$MasterArray = "" | Select Entries
$ConcatEntries = @()
foreach ($file in $files)
{

$MasterArray.Entries += -Join "|$|"

[xml]$XMLfile = gc $file


$Entries = $XMLfile.InsuranceClaim.InfoFromVet.AnimalClinicalHistory.Entry
$ConcatEntries = @()
foreach ($Entry in $Entries)
{
$ConcatEntries += $folder + $file + "|^|" + $Entry.Date + "|^|" +
$Entry.Time + "|^|" + $Entry.EnteredBy + "|^|" + $Entry.TextEntry
}

$MasterArray.Entries += $ConcatEntries -Join "|$|"

$MasterArray | Export-Csv -NoType $folder+"\"+$file+"out.csv"
}

}

最佳答案

您可以使用以下PowerShell 3.0+定义$ folders变量:

Get-ChildItem -Path E:\Project_Data -Directory -Recurse

PowerShell 2.0:
Get-ChildItem -Path E:\Project_Data -Recurse | Where-Object {$_.Mode -Match "d"}

关于xml - 在Powershell中循环遍历子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31727470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com