我有一个具有以下结构的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
希望有帮助。