powershell - Powershell搜索

标签 powershell output

这是我正在尝试做的事情:

  • 在计算机上搜索以.doc,.docx,.xls或.xlsx结尾的文件
  • 将文件名和大小(按文件扩展名分组)输出到名为“File_Summary.txt”的文本文件。
  • 我还希望输出中列出的每个文件扩展名的文件总数和文件总大小。

  • 我什至无法通过检查文件夹部分:
    $Folder_To_Check = C:\AIU
    
    $Report_File_Location = "File_Summary.txt"
    
    $files= Get-Childitem -Path $Folder_To_Check-Include *doc, *docx, *xls, *xlsx $Report_File_Location
    $totalfiles = ($files | Measure-Object).Count
    $totalsize = ($files | Measure-Object -Sum Length).Sum
    

    更新。这又是我的代码,其中对建议进行了一些更改,但仍然空白。
    $Report_File_Location = "File_Summary.txt"
    
    $files= Get-Childitem C:\AIU -include "*doc", "*docx", "*xls", "*xlsx"-recurse | Sort-Object | Get-Unique -asString
    
    $files | Out-File $Report_File_Location
    
    $totalfiles = ($files | Measure-Object).Count
    $totalsize = ($files | Measure-Object -Sum Length).Sum 
    
    write-host "totalfiles: $totalfiles"
    write-host "totalsize: $totalsize"
    

    我一直在寻找更多的东西,我认为我不应该使用Sort-Object而是使用Group Extension -NoElement | Sort Count -Descending来给我每种类型的文件总数?

    更新
    多亏了这里的人的帮助,我的代码才能正常工作。但是我遇到一个问题,就是说我的文件不存在。问题?我需要列出整个文件夹路径并使用单引号。

    此代码有效:
    $Folder_To_Check = 'C:\Users\Sarah\Documents\AIU'
    $Report_File_Location = "File_Summary.txt"
    
    $results = Get-ChildItem $Folder_To_Check -Include *.doc,*.docx,*.xls,*.xlsx -Recurse
    $results | Group-Object extension | ForEach-Object {
        [PSCustomObject]@{
            Results = $_.Name
            Count = $_.Count
            Size = [Math]::Round(($_.Group | Measure-Object -Sum Length | Select-Object -    ExpandProperty Sum) / 1MB,2)
        }
    } | Out-File $Report_File_Location -Append
    

    Matt的BIG Prop 帮助我很好地整理了结果。感谢您帮助我学习。

    最佳答案

    $Folder_To_Check = C:\AIU
    $Report_File_Location = "File_Summary.txt"
    
    $results = Get-ChildItem $Folder_To_Check -Include *.doc,*.docx,*.xls,*.xlsx -Recurse 
    $results | Group-Object extension | ForEach-Object {
        [PSCustomObject]@{
            Extension = $_.Name
            Count = $_.Count
            Size = [Math]::Round(($_.Group | Measure-Object -Sum Length | Select-Object -ExpandProperty Sum) / 1MB,2)
        }
    } | Out-File $Report_File_Location -Append
    

    像以前一样,使用Get-ChildItem获取您要查找的所有文件。 Vasja还提到了它,您可能还想使用-Recurse从子目录中获取结果。使用Group-Object按扩展名收集文件。对于每个集合输出,扩展名和文件计数的自定义对象(均为Group-Object)以及该特定扩展名的所有文件的大小均转换为MB并四舍五入到小数点后两位。

    更新为2.0

    万一您只安装了2.0,我想提供并回答适合的方法。
    $results | Group-Object extension | ForEach-Object {
        $properties = @{
            Extension = $_.Name
            Count = $_.Count
            Size = [Math]::Round(($_.Group | Measure-Object -Sum Length | Select-Object -ExpandProperty Sum) / 1MB,2)
        }
        New-Object -TypeName PSObject -Property $properties
    }
    

    关于powershell - Powershell搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26431025/

    相关文章:

    arrays - Powershell创建数组数组

    powershell - 在 PowerShell 的 'if' 语句中比较 LastWriteTime

    python - 将输出命令重定向到变量或文件?

    Webpack 5 [路径] 上下文

    python - 在输出中添加逗号

    Python 2.*/Cherrypy - 将处理的异常作为对象或字符串并输出到错误页面

    excel - 如何通过excel VBA运行powershell脚本

    json - powershell 解析 Json 文件,其中键名包含\和通配符

    powershell - 函数内点源 a "script"

    java - java中跳过输入行