复制文件直到它们超过指定的大小
Copy files until they exceed a specified size
我需要将文件复制到文件夹,直到它们超过指定大小。我编写了以下脚本,但它因以下错误而失败:
Cannot compare "Microsoft.PowerShell.Commands.GenericMeasureInfo" because it is not IComparable.
At C:.ps1:8 char:1
+ "{0:N2}" -f ($colItems.sum / 1024MB)
$files = Get-ChildItem C:\source -Recurse | % { $_.FullName }
foreach($file in $files) {
do {
Copy-Item $file -Recurse D:\target
$colItems = (Get-ChildItem d:\target -recurse | `
Measure-Object -property length -sum)
"{0:N2}" -f ($colItems.sum / 1024MB)
}
while ($colItems -le 10)
}
我做错了什么?
while 条件将在第一个 do 循环后得到验证。由于您已经枚举了文件,因此您的脚本将复制 所有 个文件。
您可以省略 do-while 循环并在达到限制时中断 foreach:
$files=Get-ChildItem C:\source -Recurse | % { $_.FullName }
$sum = 0
$sizeLimitInGB = 10
foreach($file in $files)
{
$colItems = (Get-ChildItem d:\target -recurse | Measure-Object -property length -sum)
if (($colItems.sum / 1GB) -gt $sizeLimitInGB)
{
break; # Limit reached.
}
Copy-Item $file -Recurse D:\target
}
我需要将文件复制到文件夹,直到它们超过指定大小。我编写了以下脚本,但它因以下错误而失败:
Cannot compare "Microsoft.PowerShell.Commands.GenericMeasureInfo" because it is not IComparable. At C:.ps1:8 char:1 + "{0:N2}" -f ($colItems.sum / 1024MB)
$files = Get-ChildItem C:\source -Recurse | % { $_.FullName }
foreach($file in $files) {
do {
Copy-Item $file -Recurse D:\target
$colItems = (Get-ChildItem d:\target -recurse | `
Measure-Object -property length -sum)
"{0:N2}" -f ($colItems.sum / 1024MB)
}
while ($colItems -le 10)
}
我做错了什么?
while 条件将在第一个 do 循环后得到验证。由于您已经枚举了文件,因此您的脚本将复制 所有 个文件。
您可以省略 do-while 循环并在达到限制时中断 foreach:
$files=Get-ChildItem C:\source -Recurse | % { $_.FullName }
$sum = 0
$sizeLimitInGB = 10
foreach($file in $files)
{
$colItems = (Get-ChildItem d:\target -recurse | Measure-Object -property length -sum)
if (($colItems.sum / 1GB) -gt $sizeLimitInGB)
{
break; # Limit reached.
}
Copy-Item $file -Recurse D:\target
}