我的目标是编写一个复制脚本,将文件从一个目录“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}
但语法似乎不起作用。我该怎么办?
答案 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;