我想列出具有全名,大小,LastWriteTime的目录,然后递归到第三级。
Get-ChildItem -Depth 3 |
Where-Object {
$_.PSIsContainer
} |
ForEach-Object {
$_.FullName + ";" + "{0:N2}" -f ((Get-ChildItem $_ -Recurse |
Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB"+";"+ $_.LastWriteTime
}
但是大小仅针对第一级目录进行度量。
输出为:
C:\folder1\folder2 ; 487,69 MB ; 30.01.2020 17:58:45
C:\folder1\folder2\folder3 ; 0,00 MB ; 30.01.2020 17:59:34
C:\folder1\folder2\folder3\folder4 ; 0,00 MB ; 30.01.2020 17:59:37
但是应该这样,因为我在每个文件夹中都放置了相同的文件:
C:\folder1\folder2 ; 1463,07 MB ; 30.01.2020 17:58:45
C:\folder1\folder2\folder3 ; 975,38 MB ; 30.01.2020 17:59:34
C:\folder1\folder2\folder3\folder4 ; 487,69 MB ; 30.01.2020 17:59:37
最佳答案
这将输出目录的FullName
,Size
和LastWriteTime
。请注意,如果size
为空,则什么也不输出:
Get-ChildItem -Depth 3 |
Where-Object { $_.PSIsContainer} |
foreach{
$size = "{0:N2}" -f ((Get-ChildItem $_ -Recurse |
Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB)
if ($size){
Write-Host $_.FullName ";" $size "MB" ";" $_.LastWriteTime
}
}
让我们知道您的 body 情况如何。更新资料
更新您的问题后,请尝试以下代码:
Get-ChildItem -Depth 3 |
Where-Object { $_.PSIsContainer} |
foreach{
$folders = Get-ChildItem $_.FullName -Recurse
[int]$totalSize = 0
foreach ($folder in $folders){
$totalSize += (Get-ItemProperty -Path $folder.FullName -Name Length -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Length)
}
if ($totalSize){
Write-Host $_.FullName ";" $totalSize ";" $_.LastWriteTime
}
}
它可能可以清理,我只想看看它是否如您所愿:)
关于powershell - 列出名称和大小的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59990052/