0

我试图从路径名的文本文件中找到在唯一目录中拆分的文件夹名称的频率。所以使用这个数据集我想要以下结果:

  1. 数据

    • C:\Project_1\Models\MapShedMaps\randomfilename.txt
    • C:\Project_1\Models\MapShedMaps\randomfilename.txt
    • C:\Project_1\Models\MapShedMaps\randomfilename.txt
    • C:\Project_2\Models\MapShedMaps\randomfilename.txt
    • C:\Project_3\Models\MapShedMaps\randomfilename.txt
    • C:\Project_3\Models\MapShedMaps\randomfilename.txt
    • C:\Project_3\Models\MapShedMaps\randomfilename.txt
  2. 结果

    • 项目_1 = 1
    • 项目_2 = 1
    • 项目_3 = 1
    • 型号 = 3
    • MapShedMaps = 3

我的第一个想法是使用 Get-Content 然后 ForEach-Object 将每个单词从路径中拆分出来,并将它们存储在一个保持计数的哈希表中。为了停止重复,我正在考虑一个数组或另一个哈希表来存储当前对象的路径……这一切都在那里分崩离析。我不确定存储路径的“父”成员的最佳方法是什么,以便知道它是否是一个独特的事件。任何关于如何做到这一点的建议都会很棒。

更新:

好的,我正在考虑类似于哈希表 $SAVE 并计算每个 unqiue 值,数组 $PREVIOUS 是管道中的最后一个对象,数组 $HAVESEEN 是从一开始就捕获管道。

因此,如果字符串损坏,第一个对象将是 C,下一个是 Project_1,C 移动到 $PREVIOUS 和 $HAVESEEN。我将尝试将其写下来,但我不确定如何在哈希表和数组之间传递所有这些内容。

4

1 回答 1

0

对于初学者,您可以通过对路径进行分组来获得前 3 个结果项,然后计算其他值:

PS> Get-Content .\file.txt | Group-Object -NoElement

Count Name
----- ----
    3 C:\Project_1\Models\MapShedMaps\randomfilename.txt
    1 C:\Project_2\Models\MapShedMaps\randomfilename.txt
    3 C:\Project_3\Models\MapShedMaps\randomfilename.txt
于 2012-09-28T17:07:40.640 回答