You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell需求:共享文件夹当日重复文件检测(非递归)

解决方案:筛选当日新文件中的重复大小文件

你已经有了获取当日文件的基础逻辑,我帮你完善代码,实现按文件大小筛选重复项并告警的功能。核心思路是按文件大小分组,找出同一大小下存在多个文件的组,这些就是需要告警的疑似重复文件。

完整PowerShell脚本

# 目标文件夹路径
$targetPath = "E:\Script\test"

# 获取路径下1天内创建的文件,包含文件名、大小(KB)、最后修改时间和文件哈希(可选增强)
$recentFiles = Get-ChildItem -Path $targetPath -File | Where-Object {
    $_.CreationTime -gt (Get-Date).AddDays(-1)
} | Select-Object -Property Name,
    @{Name='SizeInKb'; Expression={[math]::Round($_.Length / 1KB, 2)}},
    LastWriteTime,
    @{Name='FileHash'; Expression={(Get-FileHash -Path $_.FullName -Algorithm SHA256).Hash}}

# 按文件大小分组,筛选出包含多个文件的组(即大小重复)
$duplicateSizeGroups = $recentFiles | Group-Object -Property SizeInKb | Where-Object {$_.Count -gt 1}

# 输出告警或确认信息
if ($duplicateSizeGroups) {
    Write-Host "⚠️ 告警:发现当日导入的重复大小文件!" -ForegroundColor Red
    foreach ($group in $duplicateSizeGroups) {
        Write-Host "`n📌 文件大小:$($group.Name) KB,涉及文件:" -ForegroundColor Yellow
        $group.Group | ForEach-Object {
            Write-Host "  - 文件名:$($_.Name) | 最后修改时间:$($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')) | 文件哈希:$($_.FileHash)"
        }
    }
} else {
    Write-Host "✅ 当日导入的文件中无重复大小的文件" -ForegroundColor Green
}

关键细节说明

  • -File 参数:确保只处理文件,排除文件夹(默认不递归,符合你无需递归检查的需求)
  • SizeInKb 格式化:用[math]::Round保留两位小数,避免因浮点计算的微小差异导致分组错误
  • 文件哈希(可选):添加SHA256哈希是为了进一步验证大小相同的文件是否真的内容重复,如果不需要这层验证,可以直接删除FileHash对应的属性
  • 时间判断:当前用CreationTime判断是否为当日文件,如果你的场景中应该用LastWriteTime(比如文件是复制过来的,创建时间不是当日),直接替换$_.CreationTime为$_.LastWriteTime即可
  • 告警方式:示例用控制台输出颜色提示,你可以根据需求改成发送邮件、写入日志文件等更正式的告警方式

内容的提问来源于stack exchange,提问作者Teja554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:10