出于问题的考虑,我有一些包含文件的文件夹,其名称如下:
a-001.txt
a-002.txt
b-001.txt
b-002.txt
d-001.txt
d-002.txt
现在,我使用PowerShell首先对这些文件进行排序,以使列表的顶部是该文件夹中的最新文件:
d-002.txt
b-002.txt
a-001.txt
a-002.txt
b-001.txt
d-001.txt
编辑:然后,我将X
文件的最新数量存储到一个变量中。但是,A
如果我已经有一个以A
数组开头的X
文件,但仍要确保以最新文件结尾,那么我想忽略所有以文件开头的文件。即从上方开始,如果在,我将以以下结尾X was 4
。
d-002.txt
b-002.txt
a-001.txt
b-001.txt
这是一个简单的示例,我正在处理的文件夹包含数千个文件-具有更复杂的命名约定,但逻辑是相同的。如何在PowerShell中处理此问题?
除去您已经解决的所有其他逻辑Sort-Object
和Select-Object
标准,我将介绍以下内容。
Get-ChildItem $somePath | Select-Object *,@{Label="Prefix";Expression={(($_.Name) -Split "-",2)[0]}} | Group-Object prefix | ForEach-Object{
$_.Group | Select-Object -First 1 -Property Fullname
}
此处发生的是,我们将一个属性添加到Get-ChildItem
名为“ Prefix”的输出中。现在,您的条件可能会更复杂,但考虑到示例,我认为文件是按名称的内容按第一个“-”之前的名称进行分组的。因此,我们将获取每个文件名并基于此文件名构建其前缀。魔术来自于Group-Object
将所有项目分组,然后我们只选择第一个。在您的情况下,这将是最新的X金额。如果您在整合此功能时遇到问题,请告诉我。
除了分组逻辑外,Select-Object
在上面的示例中,所有不需要排序的内容都需要存在。
供其他读者参考
由于上述代码无法正常工作,OP的实际数据存在问题。我们在聊天中解决了问题,并使用了能够解决OP担忧的相同逻辑。问题和我的答案中的测试数据按预期工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句