2015-06-12 67 views
0

我需要將文件複製到文件夾,直到它們超過指定的大小。我寫了下面的腳本,但它失敗,出現以下錯誤:複製文件,直到它們超過指定的大小

Cannot compare "Microsoft.PowerShell.Commands.GenericMeasureInfo" because it is not IComparable. At C:\33.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) 
} 

我在做什麼錯?

回答

2

該條件將被驗證第一個循環。由於您已經通過文件列舉,您的腳本將複製全部文件。

可以省略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 
} 
相關問題