根据 XML 输入创建字符串 - 整数对的动态列表/数组



我有一个具有以下结构的XML文件:

<root>
<system name="SYS-NAME">
<file name="NAME.EXTENTION" md5="HASH" path="PATH;PATH1;PATH2"/>
</system>
<system name="SYS-NAME1">
<file name="NAME.EXTENTION1" md5="HASH1" path="PATH1"/>
<file name="NAME.EXTENTION1-1" md5="HASH1-2" path="PATH1-2;PATH2-2"/>
</system>
<system name="SYS-NAME2">
<file name="NAME.EXTENTION2" md5="HASH2" path="PATH2;PATH3;PATH4;PATH5"/>
</system>
</root>

我遍历它并在路径中搜索特定模式,例如日期模式的特定名称,例如使用以下代码2019.08,我在其中拆分路径并查看其中的第一个元素:

foreach ($entry in $osFiles) {
$entry.path.Split(";") | % {
$numbTotal++
$root = $_.Split("")
if ($root[0] -match "(19|20)[0-9]{2}[- /.](0[1-9]|1[012])") {
$numbPatches++
##Need Help Here
} elseif ($root[0] -eq "NAMED") {
$numbNAMED++
}
}
}

问题是创建一个列表,该列表将保存分配了计数器的日期。所以在示例中,我有路径:

2019.08/aaaa 2019.09/BBBB 2019.08/中交 2019.08/ADD 2019.09/aaaa 2019.10/bbbf

结果列表/数组应包含2019.08具有3文件的信息;2019.09-2;2019.10-1.我完全不知道该怎么做。我想我有一个脑屁

文件夹结构:

> gci

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
...
d-----        11/08/2019    19:47                2019.08
d-----        11/08/2019    19:47                2019.09
d-----        11/08/2019    19:47                2019.10
...

尝试使用哈希表/字典并与Get-ChildItems-File参数组合:

$directories = Get-ChildItem
$actLocation = Get-Location
$dictionary = @{}
$directories | ForEach-Object {
try{
if($_.Name -match "(19|20)[0-9]{2}[- /.](0[1-9]|1[012])"){
Set-Location $_
$dictionary[$_.Name] += @(Get-ChildItem -Path . -Recurse -File).Count
} 
}
finally{
Set-Location $actLocation
}
}

$dictionary的内容:

> $dictionary
Name                           Value
----                           -----
2019.09                        2
2019.08                        3
2019.10                        1

希望有帮助。