PowerShell:如何运行文件夹大小总和?

时间:2009-02-12 22:03:46

标签: powershell

我的目标是编写一个复制脚本,将文件从一个目录“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} 

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

2 个答案:

答案 0 :(得分:2)

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}}

答案 1 :(得分:0)

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

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