hakeの日記

Windows環境でプログラミングの勉強をしています。

2017-01-01から1ヶ月間の記事一覧

PowerShell - Sort-Object - 1から10の数字を、2.1に近い順に並べかえる

1..10 | Sort-Object @{ Expression={[MATH]::Abs($_ - 2.1)}; Ascending = $true # expressionブロックの値が小さい順 } 実行結果 2 3 1 4 5 6 7 8 9 10

PowerShell - ForEach-Objectの多重使用 - CSVファイルを読み取りデータに1を加算して出力する

Get-Content ".\test.csv" | %{ ( # 1行ごとの処理 $_ -split "," | %{ # 1データごとの処理 [int]$_ + 1 } ) -join "," } | Write-Output test.csv 1,2,3 4,5,6 7,8,9 結果 2,3,4 5,6,7 8,9,10 普通のプログラムっぽい書き方(ForEach-Objectは使用しない)…

PowerShell - Excelの操作

EXCEL用のCOMオブジェクトを作成して、あとはVBAと同じ感覚で操作できるっぽいです。 一点、配列やコレクションの括弧の形状がVBAだと( )ですが、[ ]にしないとメソッドと間違えられてエラーになるので注意。 $excel = New-Object -ComObject Excel.Applicat…

PowerShell - GUIプログラム

ボタンをクリックすると文字を表示するプログラム。 デフォルトで使用できないクラスは、Add-Typeで読み込む。Formに設定したフォントはForm上の部品にも適用される。イベント登録はAdd_イベント名(処理)と記述する。 System.Windows.Forms.Formクラス - M…

PowerShell - クラス

バージョン5からクラスが使用可能になったようです。 class Person { [string] $name [int] $age # コンストラクタ Person() { $this.name = "No Name" $this.age = 0 } Person([string]$name, [int]$age) { $this.name = $name $this.age = $age } # メソッ…

PowerShell - クロージャ

戻り値となるブロック内の変数$cntをscriptスコープ宣言することでfunction内の変数$cntへアクセスできるようになる? function generator($step = 1){ $cnt = 0 return { $script:cnt += $step return $cnt }.GetNewClosure() } $a = generator &($a) # 1 &…

PowerShell - 独自オブジェクトの作成

PSObjectにプロパティやメソッドを追加していくことで独自のオブジェクトが作成できます。 # Hashでプロパティを追加 $hash = @{name = "Taro"; age = 20} $obj = New-Object PSObject -Property $hash # Add-Memberでプロパティを追加 $obj | Add-Member -M…

PowerShell - 例外処理

try節のブロックで例外が発生した場合、(該当する型を記述した)catch節が実行される。finally節は例外発生有無に関わらず実行される。 try { "try節です" 1/0 } catch [Exception] { "catch節です" } finally { "finary節です" }try節です catch節です fin…

PowerShell - 例外処理(throw)

意図的に例外を発生させる場合にはthrowを使用する。 try { "try節です" throw "例外発生" } catch [Exception] { "catch節です" } finally { "finary節です" }PS C:\> $error[0].CategoryInfo Category : OperationStopped Activity : Reason : RuntimeExce…