PowerShell遍历变量中文件夹列表:验证存在与获取大小求助
PowerShell 验证文件夹存在并获取大小解决方案
假设你从Oracle查询得到的文件夹路径已经存储在$folderPaths变量中(应为字符串数组),可以用以下代码完成需求:
# 遍历每个文件夹路径 foreach ($path in $folderPaths) { # 验证路径是否为存在的文件夹 if (Test-Path -Path $path -PathType Container) { # 递归获取所有文件并计算总大小 $sizeStats = Get-ChildItem -Path $path -Recurse -File | Measure-Object -Property Length -Sum # 将字节数转换为易读的GB格式(保留两位小数) $readableSize = [math]::Round($sizeStats.Sum / 1GB, 2) Write-Output "文件夹 '$path' 存在,总大小:$readableSize GB" } else { Write-Warning "文件夹 '$path' 不存在或不是有效文件夹" } }
你之前可能踩的坑:
- 未指定
-File参数:如果直接用Get-ChildItem -Recurse,会包含文件夹对象,而文件夹的Length属性为0,导致计算结果错误 - 路径格式问题:如果路径包含空格或特殊字符,确保
$folderPaths中的字符串是完整的(比如没有被截断) - 权限限制:如果部分子文件夹无法访问,可添加
-ErrorAction SilentlyContinue忽略报错(但建议后续排查权限问题):$sizeStats = Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
可选优化(非递归,仅当前文件夹):
如果不需要包含子文件夹的大小,去掉-Recurse参数即可:
$sizeStats = Get-ChildItem -Path $path -File | Measure-Object -Property Length -Sum
内容的提问来源于stack exchange,提问作者user2595891
相关产品推荐
相关产品推荐

