如何实现将大于2GB的文件夹移动到指定目录?
问题排查与修正方案
原脚本的核心问题
- 错误替换了
$fso的赋值:原本用来创建FileSystemObject对象的行被改成了Move-Item,这不仅导致$fso不是合法的COM对象,而且Move-Item本身缺少-Path参数的具体值,语法完全错误。 - 缺少实际的移动操作:原脚本只完成了大于2GB文件夹的筛选,没有对筛选结果执行移动动作。
修正后的脚本
$threshold = 2GB # 恢复创建FileSystemObject对象,用于计算文件夹总大小 $fso = New-Object -COM 'Scripting.FileSystemObject' # 遍历源目录下的所有子文件夹,筛选出总大小超过阈值的,然后执行移动 Get-ChildItem 'C:\Source\' -Recurse -Directory | Where-Object { $fso.GetFolder($_.FullName).Size -gt $threshold } | ForEach-Object { # 执行移动操作,-Force参数用于覆盖目标已存在的同名文件夹(可选,根据需求调整) Move-Item -Path $_.FullName -Destination "C:\Dest\" -Force # 可选:输出移动日志 Write-Host "已移动文件夹: $($_.FullName)" }
补充说明
- 如果不需要覆盖目标文件夹,去掉
-Force参数即可,此时若目标存在同名文件夹会报错。 - 若要避免移动过程中出现异常中断,可以添加
-ErrorAction SilentlyContinue参数忽略错误,或者用try/catch块处理异常。
内容的提问来源于stack exchange,提问作者miodf
相关产品推荐
相关产品推荐

