对于每个对象获取文件大小

时间:2018-12-21 16:28:01

标签: powershell

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

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

我尝试对每个对象使用a并获取像这样的item属性

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您要查找的是PowerShell中的哈希表。

使用foreach-object时,您可以使用<meta name="viewport" content="width=device-width" /> 引用要迭代的列表中的单个对象

下面的代码将完成您想做的事情:

$_