【问题标题】:For Each Object Get File Size对于每个对象获取文件大小
【发布时间】:2018-12-22 12:26:12
【问题描述】:

如标题所示,我想获取目录中每个文件的大小(以 KB 为单位),并将其与这样的文件名一起存储在一个数组中。

@(
('Sample.txt',10)
)

我已经尝试对每个对象使用 a 并获得这样的项目属性

Get-ChildItem $path | ForEach-Object{
$size += Get-ItemProperty.length 
}

但它不起作用,因为我没有指向它的变量。

【问题讨论】:

  • Get-ChildItem $path 已经输出了将Name propertyLength property 组合在一起的对象(至少在files 的情况下)。您的第二个代码 sn-p 表明您正在尝试计算目录中所有文件的总大小,但在您的问题之前的所有内容都表示您想要单个文件的大小。你能澄清一下你想要做什么吗?

标签: powershell


【解决方案1】:

我认为您最好使用 PSCustomObjects 数组。 [grin] 类似于下面的代码。生成的集合可以在其他情况下使用 - 例如导出到 CSV 文件。

您可能希望删除 .Size_KB 属性上的填充。现在它给了<some spaces><number>。如果您删除 ,7 您可以取消左侧的填充空间。

$SourceDir = $env:TEMP
$Filter = '*.log'

$FileList = Get-ChildItem -LiteralPath $SourceDir -Filter $Filter -File

$Results = foreach ($FL_Item in $FileList)
    {
    [PSCustomObject]@{
        Name = $FL_Item.Name
        Location = $FL_Item.Directory
        Size_KB = '{0,7:N2}' -f ($FL_Item.Length / 1KB)
        }
    }

$Results

输出...

Name                                              Location Size_KB
----                                              -------- -------
Genre-List_2018-12-18.log                         C:\Temp     0.17
Grouping-Strings-List_2018-12-19.log              C:\Temp    46.52
Grouping-Words-List_2018-12-19.log                C:\Temp     1.13
Itunes_AlbumAutoRating_Disable.ps1_2018-12-17.log C:\Temp     0.21
Itunes_Default-Rating_Set.ps1_2018-12-21.log      C:\Temp     0.21
Itunes_Genre-Cleanup.ps1_2018-12-18.log           C:\Temp     0.31
Itunes_Grouping-Cleanup.ps1_2018-12-19.log        C:\Temp     0.38
Itunes_R-PC-SC_Save.ps1_2018-12-20.log            C:\Temp     0.20
jusched.log                                       C:\Temp     9.99
vscode-inno-updater-1545349272.log                C:\Temp   337.14

【讨论】:

    【解决方案2】:

    您正在寻找的是 PowerShell 中称为哈希表的内容。

    使用 foreach-object 时,您可以使用 $_ 引用列表中正在迭代的单个对象

    下面的代码将完成您正在尝试做的事情:

    $size = @{}
    get-childitem -path "C:\Temp" | foreach-object {
      $name = $_.Name
      $filesize = ((get-item $_.FullName).Length/1KB)
      $size[$name] = $filesize
    }
    

    【讨论】:

      猜你喜欢
      • 2017-09-02
      • 2022-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2016-09-10
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多