kaijie117 发表于 2024-11-11 18:07

获取该目录内大于指定KB的文件夹,并复制到指定目录

文件夹结构举例
母文件夹
    ---子文件夹1
    ---子文件夹2
    ---子文件夹3
    ---子文件夹4
    ---子文件夹5
......
    ---子文件夹1000
            --文件1
            --文件2
          .....
母文件夹内有多个子文件夹,子文件夹内有多个文件.

需求:
想要将母文件夹中大于指定KB的子文件夹(包含内部文件)提取出来

因为window10没办法按文件夹大小排序,所以看看有没有大哥有啥法子
      

tantanxin147 发表于 2024-11-11 18:07

没有你那样的文件结构,你试一下,有问题在改https://wwwj.lanzouw.com/iNRe02eue30j
https://s3.bmp.ovh/imgs/2024/11/12/45ad2a13eb235a6c.png

wkk778 发表于 2024-11-12 10:47

使用PowerShell 脚本# 配置源目录、目标目录和文件夹大小阈值(单位:KB)
$sourceDir = "C:\path\to\source"   # 源目录
$destDir = "C:\path\to\destination" # 目标目录
$sizeThresholdKB = 1024             # 指定大小阈值(KB)

# 将 KB 转换为字节
$sizeThresholdBytes = $sizeThresholdKB * 1024

# 检查目标目录是否存在,不存在则创建
if (!(Test-Path -Path $destDir)) {
    New-Item -ItemType Directory -Path $destDir
}

# 遍历源目录下的所有文件夹
Get-ChildItem -Path $sourceDir -Directory -Recurse | ForEach-Object {
    $folder = $_
    $folderSize = (Get-ChildItem -Path $folder.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
   
    # 如果文件夹大小超过指定阈值,则复制到目标目录
    if ($folderSize -gt $sizeThresholdBytes) {
      $destinationPath = Join-Path -Path $destDir -ChildPath $folder.Name
      Copy-Item -Path $folder.FullName -Destination $destinationPath -Recurse
      Write-Output "已复制文件夹 $($folder.FullName) 到 $destinationPath,文件夹大小: $(::Round($folderSize / 1KB, 2)) KB"
    }
}
页: [1]
查看完整版本: 获取该目录内大于指定KB的文件夹,并复制到指定目录