【发布时间】:2019-04-26 06:06:49
【问题描述】:
我需要一个脚本来查看我们的备份文件夹(我们对计算机进行完整备份),并确保我们为每台计算机存储的备份永远不会超过两个最近的备份。我目前正在研究一个 powershell 循环,该循环应该将每个文件名与备份文件夹中的每个其他文件进行比较。每台机器都有多个备份文件,可以通过匹配的前缀和由分隔符分隔的唯一 ID 号来识别这些备份文件。
前缀 = 机器名称和唯一 ID 表示每个备份。
我正在设置外循环并撞到墙上。我将要检查的文件列表存储在$array 中。
我有一个嵌套的 for 循环,我想检查每个文件与数组中的每个其他文件。我有一个查询应该重建数组并在每次迭代时排除当前参考文件。
for ($i=0; $i -lt 5; $i++) {
$array = Get-ChildItem -Path C:\Users\Aaron.Trujillo\Desktop\test $array = Get-ChildItem -Path C:\Users\Aaron.Trujillo\Desktop\test -Exclude $array[$i]
for ($j=0; $j -lt 5; $j++){
Write-Host "i: $i j: $j"
Write-Host "Array i: $($array[$i].name) Array j: $($array[$j].name)"
if($array[$i].name -ne $array[$j].name)
{
Write-Host "truthval=false"
$truthval="false"
}
else
{
Write-Host "truthval=true"
$truthval = "true"
}
}
}
我期待这个循环将数组中的前五个文件相互比较(不包括当前参考文件)并更改每个文件的变量,但由于某种原因,参考文件没有被排除在外。
逻辑一定有问题,但我很难发现它。
【问题讨论】:
-
如果你正在做你似乎正在做的事情......我会使用
Group-Object。您可以使用计算属性进行分组,就像您可以使用Select-Object的计算属性一样。 [咧嘴一笑]
标签: powershell string-comparison