在 Powershell 中查找重复的文件名

男人

我是 PowerShell 菜鸟,正在寻找一种在目录中查找重复文件并将文件的文件路径写入文本文件或 csv 文件的方法。我当前的代码正在运行,但效率极低且速度缓慢。任何建议将不胜感激

#Declaring the Array to store file paths and names
$arr = (get-childitem "My Path" -recurse | where {$_.extension -like '*.*'})

#creating an array to hold already found duplicate elements in order to skip over them in the iteration
$arrDupNum = -1

#Declaring for loop to itterate the array
For ($i=0; $i -le $arr.Length - 1; $i++) {
    $percent = $i / $arr.Length * 100
    Write-Progress -Activity "ActivityString" -Status "StatusString" -PercentComplete $percent -CurrentOperation "CurrentOperationString"

    $trigger = "f"

    For ($j = $i + 1; $j -le $arr.Length - 1; $j++)
    {
        foreach ($num in $arrDupNum)
        {
            #if statement to skip over duplicates already found
            if($num -eq $j -and $j -le $arr.Length - 2)
            {
                $j = $j + 1
            }            
        }

        if ($arr[$j].Name -eq $arr[$i].Name)
            {
                $trigger = "t"
                Add-Content H:\Desktop\blank.txt ($arr[$j].FullName + "; " + $arr[$i].FullName)
                Write-Host $arr[$i].Name
                $arrDupNum += $j
            }
    }
    #trigger used for formatting the text file in csv format
    if ($trigger -eq "t")
    {
    Add-Content H:\Desktop\blank.txt (" " + "; " + " ")
    }
}
马蒂亚斯·R·杰森

使用哈希表按名称对文件进行分组:

$filesByName = @{}

foreach($file in $arr){
    $filesByName[$file.Name] += @($file)
}

现在我们只需要找到包含多个文件的所有哈希表条目:

foreach($fileName in $filesByName.Keys){
    if($filesByName[$fileName].Count -gt 1){
        # Duplicates found!
        $filesByName[$fileName] |Select -Expand FullName |Add-Content .\duplicates.txt
    }
}

这样,当你有N文件时,你最多会迭代它们N*2几次,而不是N*N多次:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PowerShell - 重命名对象数组中的重复文件名

来自分类Dev

Powershell:查找定义功能的文件名

来自分类Dev

用于在文件中查找文件名并将其移动到不同目录的 Powershell 脚本

来自分类Dev

验证Powershell中输入的文件名

来自分类Dev

从powershell中的部分读取文件名

来自分类Dev

在 PowerShell 中重命名文件名

来自分类Dev

在Powershell中批量重命名照片并添加字母以重复文件名

来自分类Dev

在PowerShell中查找当前的当前季度以添加格式为“ yyyyqq”的文件名

来自分类Dev

Powershell:在定义函数的位置查找文件名

来自分类Dev

Powershell文件名检查

来自分类Dev

文件名提取-Powershell

来自分类Dev

在Powershell文件名中按日期列出文件

来自分类Dev

如何使用PowerShell中的文件内容获取文件名

来自分类Dev

从powershell中的文件名中删除特殊字符

来自分类Dev

如何在Powershell中拆分文件名并从中选择文件名?

来自分类Dev

Powershell:将昨天的日期放在文件名中

来自分类Dev

PowerShell多条语句条件-比较文件名中的日期

来自分类Dev

使用Powershell删除文件名中的方括号字符

来自分类Dev

使用PowerShell重命名或删除文件名中的字符

来自分类Dev

Powershell从文件名中删除特殊字符

来自分类Dev

使用PowerShell在文件名中搜索字符串

来自分类Dev

如何在PowerShell中解析文件名

来自分类Dev

使用powershell从文件名中获取时间戳

来自分类Dev

Powershell询问日期的文件名

来自分类Dev

使用powershell在linux发行版中获取文件名和文件扩展名

来自分类Dev

在目录中查找重复的文件名(不指定确切的文件名)

来自分类Dev

在目录中查找重复的文件名(不指定确切的文件名)

来自分类Dev

使用Powershell脚本在文件夹中获取某些文件名

来自分类Dev

PowerShell获取文件名,文件夹中没有路径和TSV行数

Related 相关文章

  1. 1

    PowerShell - 重命名对象数组中的重复文件名

  2. 2

    Powershell:查找定义功能的文件名

  3. 3

    用于在文件中查找文件名并将其移动到不同目录的 Powershell 脚本

  4. 4

    验证Powershell中输入的文件名

  5. 5

    从powershell中的部分读取文件名

  6. 6

    在 PowerShell 中重命名文件名

  7. 7

    在Powershell中批量重命名照片并添加字母以重复文件名

  8. 8

    在PowerShell中查找当前的当前季度以添加格式为“ yyyyqq”的文件名

  9. 9

    Powershell:在定义函数的位置查找文件名

  10. 10

    Powershell文件名检查

  11. 11

    文件名提取-Powershell

  12. 12

    在Powershell文件名中按日期列出文件

  13. 13

    如何使用PowerShell中的文件内容获取文件名

  14. 14

    从powershell中的文件名中删除特殊字符

  15. 15

    如何在Powershell中拆分文件名并从中选择文件名?

  16. 16

    Powershell:将昨天的日期放在文件名中

  17. 17

    PowerShell多条语句条件-比较文件名中的日期

  18. 18

    使用Powershell删除文件名中的方括号字符

  19. 19

    使用PowerShell重命名或删除文件名中的字符

  20. 20

    Powershell从文件名中删除特殊字符

  21. 21

    使用PowerShell在文件名中搜索字符串

  22. 22

    如何在PowerShell中解析文件名

  23. 23

    使用powershell从文件名中获取时间戳

  24. 24

    Powershell询问日期的文件名

  25. 25

    使用powershell在linux发行版中获取文件名和文件扩展名

  26. 26

    在目录中查找重复的文件名(不指定确切的文件名)

  27. 27

    在目录中查找重复的文件名(不指定确切的文件名)

  28. 28

    使用Powershell脚本在文件夹中获取某些文件名

  29. 29

    PowerShell获取文件名,文件夹中没有路径和TSV行数

热门标签

归档