業務改善!Windows PowerShell入門

Windows PowerShellで、とにかく楽をしたい!実際に仕事で楽になった事、便利になった事を紹介しつつ進めていきます。

PowerShell 誰得?!エディタ風にコンソール出力しろ!

やぁ、こんばんは。

俺は今日もPowerShellライフを楽しんでいる。

 

しかし、たまには誰得?!な

 

何の役にも立たないスクリプトを作って遊ぶのも一興だゼ!

 

 

遊びの内容はこうだ。

 

PowerShellスクリプトファイルの内容をコンソール出力する。

で、以下の2点で遊ぶ。 

・各行に行番号を出力する。

・コメント行は緑色で出力する。

(※ただし、マルチラインコメントは考慮しないので、対象外)

 

以上。

では、遊ぶ!

低スペックなエディタ風に出力する遊び

 

#--------------------------------------
# 低スペックなエディタ風に出力する遊び
#--------------------------------------
$file = Read-Host "ファイル指定"
Write-Host ""

[int]$i = 0
ForEach($line in gc $file){
    
    #行番号インクリメント
    $i++

    #判定用文字列、出力用文字列の作成
    $chkStr = $line.Trim()
    $outLine = ([string]$i).PadLeft(4,"0") + ":" + $line
        
    #空白行
    If($chkStr.Length -eq 0){   
        Write-Host $outLine
        Continue
    }
    
    #先頭1文字:"#"
    If($chkStr.SubString(0,1) -eq "#"){
        Write-Host $outLine -ForegroundColor Green
        Continue
    }  

    #上記以外
    Write-Host $outLine
    
}

Write-Host ""
Read-Host "×ボタンで終了!"

f:id:acoustic_groove:20171215235847p:plain

 

このスクリプト自身を出力してみた。 このスクリプトの核となるのは、Get-Contentコマンドレットエイリアスgc)だ。

 

このコマンドレットで取得したテキストの全行に、ForEachステートメントをブチかまして各行の判定をしていく。 ForEachステートメントの中でやることは以下の通りだ。

 

1.判定専用の文字列を作成する。ただし、各行のインデントが判定の邪魔になるので、空白除去(StringクラスのTrimメソッド使用)をかます。
2.遊びの内容である行番号付きの文字列を作成する。見た目を良くするために、行番号の前ゼロ補完StringクラスのPadLeftメソッド使用)をする。行番号用変数の$iの型変換も重要だ。
3.空白行なら、色はノーマル出力。
4.先頭1文字目が#なら、色は緑色出力!
5.上記以外なら、色はノーマル出力!

 

注意すべきは、処理中に該当行がヒットしたら、Continueを使って、次のループに飛ぶことだ。

 

遊び終了!

ふっ、まったくマジで誰得だったゼ。

 

PowerShell、イエーイ!

 

ロリポップ!レンタルサーバー!はあなたの「やってみたい!」を応援します!
ロリポップ!なら、ホームページ、ブログ、ネットショップ…
これらが今すぐ、そして簡単にできちゃう!
マニュアルやライブチャットを完備しているので、ホームページ初心者でも安心。
これだけついてるのに月額100円(税抜)~ととってもお得。
もちろん無料のお試し期間も10日間あるので安心ですね。

▼ロリポップ!レンタルサーバーはこちら