Scripting Games 2009, Advanced Events 4, 5, 6

Продолжаю публиковать свои решения задачек Scripting Games из категории Advanced:

Event 4:

Я решил не заниматься автоматизацией MS Office, при наличии нормальных альтернатив, пока эти нехорошие люди не пофиксят багу с автоматизацией при работе с региональными настройками отличными от En-Us🙂 Так что решение создаёт форму и рисует на ней графики с использованием .Net:

 

image

$Jumpers = @{}            
Get-Content 'C:\Scripts\High Jump Stats_Adv4.txt' | ?{$_ -match '^([^,]+), ([^,]+), ?(.+)$'} | foreach {$Jumpers[$matches[2] + " " + $matches[1]]=$matches[3].split(",")}            
            
[reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")|Out-Null            
[reflection.assembly]::LoadWithPartialName( "System.Drawing")|Out-Null            
$pen = new-object Drawing.Pen black            
$pen.color = "red"            
$pen.width = 1            
$form = New-Object Windows.Forms.Form            
$cmb = New-Object Windows.Forms.Combobox            
$form.width = 460            
$form.height=150            
$cmb.DropDownStyle = 2            
$Jumpers.Keys | %{$cmb.Items.Add($_)|Out-Null}            
$form.Controls.Add($cmb)            
$formGraphics = $form.createGraphics()            
$cmb.SelectedIndex = 0            
function draw            
{            
    $n = 0            
    $formGraphics.DrawLine($pen, 10, 10, 190, 190)            
    $data = $jumpers[$cmb.Items[$cmb.SelectedIndex]]            
    $formGraphics.Clear("White")            
    for($i=0; $i -lt $data.count -1;$i++)            
    {            
        $n+=10            
        $formGraphics.DrawLine($pen, $n, $form.height - $data[$i], $n+10, $form.height - $data[$i+1])            
    }            
}            
$cmb.add_SelectedIndexChanged({draw})            
$form.add_paint({draw})            
$form.ShowDialog()

 

Event 5:

Пятый эвент оказался совсем простым, надо было лишь знать каким объектом COM воспользоваться, и научиться выдирать из него нужные свойства🙂

$img = New-Object -ComObject Wia.ImageFile            
dir c:\scripts\*.jpg | foreach {            
    $img.LoadFile($_.fullname)            
    $_.fullname + ": " + ($img.properties|?{$_.name -eq "EquipMake"}).Value +             
    " (" + ($img.properties|?{$_.name -eq "EquipModel"}).Value + ")"            
}

 

Event 6:

Ну и для 6го понадобились лишь регулярные выражения🙂

gc 'c:\scripts\Network Trace_Adv6.txt' |             
? {$_ -match '(\d+) ms\s+(\d+) ms\s+(\d+) ms\s+(.+)$'}|            
%{$matches[4]} |             
select @{n="Name";e={$matches[4]}}, @{n="Average";e={[int]((([int]$matches[1])+$matches[2]+$matches[3])/3)}} |            
sort Average -Descending | select -first 5 | ft -a

Один ответ to “Scripting Games 2009, Advanced Events 4, 5, 6”


Обсуждение закрыто.

%d такие блоггеры, как: