如何对文件计数进行3向比较?

时间:2015-05-04 17:41:09

标签: powershell

我有一个脚本,它会根据间隔计算文件夹中的文件。它将写入文件夹中的文件数并对其进行颜色编码。我的问题是我需要它返回3个值:绿色,黄色或红色。

如果文件小于10,则将foregroundcolor输出为绿色。 如果它大于10,但小于20,则输出前景色为黄色。 如果超过21,则输出为红色。

如何对中间值设置上限,以便红色可以单独显示?

$Counter = Read-Host "Enter Update Interval"
$timeout = new-timespan -Minutes 1
$sw = [diagnostics.stopwatch]::StartNew()

Write-Host "Outbound Script"
$Counter
while ($sw.elapsed -lt $timeout){
  if ((Get-ChildItem \\server\folder).count -le 12) {
    Write-Host (Get-ChildItem \\server\folder).count "Items in Outbound" -ForegroundColor Green
  } else {
    Write-Host (Get-ChildItem \\server\folder).count "Items in Outbound" -ForegroundColor Yellow
  }
  start-sleep -seconds $Counter
}

Write-Host "Times-Out"

我尝试为所有Get-ChildItem创建变量,但出于某种原因,如果我这样做,它只会计算一次。

3 个答案:

答案 0 :(得分:2)

$Counter = Read-Host "Enter Update Interval"
$timeout = new-timespan -Minutes 1
$sw = [diagnostics.stopwatch]::StartNew()

Write-Host "Outbound Script"
$Counter
While ($sw.elapsed -lt $timeout){
    $FileCount = (Get-ChildItem \\server\folder).count

    If ($FileCount -le 10) {
        Write-Host "$FileCount Items in Outbound" -ForegroundColor Green
    } ElseIf ($FileCount -ge 11 -and $FileCount -le 20) {
        Write-Host "$FileCount Items in Outbound" -ForegroundColor Yellow
    } Else {
        Write-Host "$FileCount Items in Outbound" -ForegroundColor Red
    }

    Start-Sleep -seconds $Counter
}

Write-Host "Times-Out"

答案 1 :(得分:2)

根据您使用switch获得条件的疯狂程度,这将是有益的。此外,希望不要过分,我们可以使用splatting来做到这一点,以便如果您的消息文本发生变化,您只需编辑一行。

Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller version        
10 declared in library     projectName\platforms\android\ build\  intermediates\exploded\aar\android\cordovaLib\unspecified\debug\AndroidManifest.xml .  
Suggestion : use     
tools.overrideLibrary = "org.apache.cordova" to force usage. 

$filecount = (Get-ChildItem \\server\folder).count $color = @{} switch($filecount){ {$_ -le 10 }{$color.ForegroundColor = "Green"} {11..20 -contains $_}{$color.ForegroundColor = "Yellow"} {$_ -gt 20}{$color.ForegroundColor = "Red"} } Write-Host "$FileCount Items in Outbound" @color 涵盖范围要求。如果11..20 -contains $_在10到21之间,则该条件成立。更具技术性的解释:$filecount使用范围运算符创建数字数组,我们使用11..20查看其中一个元素是否为-contains。请注意您在这里的条件顺序。

答案 2 :(得分:1)

添加一个elseif语句。

IF ((Get-ChildItem \\server\folder).count -le 12) {...}
ELSEIF ((Get-ChildItem \\server\folder).count -lt 20) {...}
ELSE {...}