« Windows7のエクスプローラ関連のTips | メイン | 通勤の楽しみと悩み »

Windows PowerShellでメモ書きするスクリプト [utilities]

f.batをf.ps1に移植rad89.comで紹介されている,メモ帳代わりに使えるバッチファイルをWindows PowerShell(以下PS)に移植してみたので簡単な解説とスクリプトファイルの公開をしてみるよ,というエントリです.

f.batはリンク先の解説にもあるように簡単なコマンドでデータベースを作ることができるバッチファイルで以前から愛用しています.PS環境でももちろん使えますが,PSはいろいろなことができる言語なのでswitchでの制御構文の勉強をかねて,f.batの移植を思い立ちました.PSの詳細については後掲の参考サイトを見ていただくとして,早速作ったものの解説に移ります.

スクリプトの全体像

書いたスクリプトは以下のような13行ほどの関数(と変数が1つ).実にシンプルです.

$notes = "path-to-file"

function f([string]$cue, [string]$str){
    switch ($cue) {
        add {
            Add-Content -path $notes -value $str
            "ok"
        }
        usage {
            write-host "f add 'some trings'"
            write-host quot;f 'keywords'"
        }
        default {
            Get-Content -path $notes | Select-String -pattern $cue
        }
    }
}

switchによる制御構文

PSのswitch文の使い方についてはCodezineの記事を参考にしました.ポイントはパターンマッチで処理を分岐できることですね.オプションをつければもう少しいろいろなことができるはずですが,目的のスクリプトはそんなに難しいことができなくても構わないので今回は使用せず.書いたスクリプトでは引数を2つ($cueと$str)設定して以下の3つの処理を行えるようにしています.

  • $cueにaddが入った場合は$strの値をファイルに書き込む
  • $cueにusageが入った場合はWrite-Hostで使い方を表示させる
  • $cueにaddとusage「以外」が入った場合はファイルの内容を検索する

switchの各分岐では処理内容をわかりやすくする目的で-pathや-patternなどをつけて冗長に書いていますが,これらはすべてなくても動作します.

早速使ってみよう

では実際に使ってみます.基本的にf.batと同じような動作になりますが,まずは使い方の確認から.fの後の半角スペースに続けてusageと入力すると以下のように表示されます.

使い方の確認:
PS > f usage
f add "some strings"
f "keyword"

そしてメモの追加.次のようなコマンドを打ち込んでエンターキーをたたくと$notesに設定したターゲットファイルに文字列が追加されます.間にスペースを含む文字列を追加したい場合は文字列を引用符で囲って下さい.

文字列の追加:
PS > f add "ToDo: write a entry about PowerShell"
ok

最後に検索してみます.

文字列の検索:
PS > f powershell
ToDo: write a entry about PowerShell

ということでf.batをf.ps1へ移植できました.実際驚くほど簡潔に書けてびっくりしました(これほどシンプルになるとは!!).他にもいろいろと関数をつくっていますが,そのうちまた使えそうなものがあったら何か書いてみようと思います.

トラックバック (0)

このエントリーのトラックバックURL: http://dormouse.oops.jp/mtc/mt-tb.cgi/162

(スパム対策として当該エントリへのリンクが含まれないトラックバックを弾いています)

以下の一覧は、このエントリーを参照しています:  Windows PowerShellでメモ書きするスクリプト

コメント (0)

コメントを投稿

(コメントは承認制をとっているため,公開されるまで時間がかかる場合があります)


画像の中に見える文字を入力してください。