【问题标题】:PowerShell : how do you run a folder size summation?PowerShell:如何运行文件夹大小总和?
【发布时间】:2010-10-07 07:34:35
【问题描述】:

我的目标是编写一个复制脚本,将文件从一个目录“d:\aa1”移动到“d:\aa2”,直到另一个目录“d:\bbb”的指定大小。换句话说...我希望它将所有文件从“d:\aa1”复制到“d:\aa2”,直到“d:\aa1”的大小等于或小于“d:\ bbb”。

到目前为止我有

$lmt = get-childitem d:\bbb  | measure-object -property length -sum 
do { get-childitem -path d:\aa1 | move-item -destination "d:\aa2" } while {measure-object {$_.sum -lt $lmt} 

但语法似乎不起作用。我该怎么做?

【问题讨论】:

    标签: powershell


    【解决方案1】:
    Get-ChildItem -path d:\aa1 `
    | % {if (((Get-ChildItem d:\aa2 `
    | Measure-Object -Property Length -Sum).Sum + $_.Length) `
    -lt (Get-ChildItem d:\bbb | Measure-Object -Property Length -Sum).Sum) `
    {Move-Item $_.FullName d:\aa2}}
    

    【讨论】:

    • 比我的好,因为它会在复制之前检查总数。
    • 我认为您在 $.length 中缺少一个 _。我认为应该是 $_.Length。
    • 编辑文本框中是$_.Length,所以我不得不更改为代码格式。
    • 你能把每个管道符号后面的行分开吗,这会让你的代码更容易阅读。没什么大不了的
    • 我收到一条错误消息,提示 Measure-object : property "length" can not be found in any objects input
    【解决方案2】:

    目录总和应该有一个属性或方法。您可以根据需要为下面的脚本添加选项到'ls':

    rv total;
    foreach ($i in ((ls -Force) | Select Length)) {[int64]$total+=$i[0].Length};
    $total /1GB;
    

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 2022-11-04
      • 2017-12-22
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2021-06-12
      • 2011-01-29
      相关资源
      最近更新 更多