ブラウザには大量の未整理ブックマーク、そしてAIに聞けばおおよそ意に沿ったWebを探せる時代。ブラウザのブックマークを能動的に活用しなくなって随分経つ。
しかし、よく使う個別のWebページや発見した新たなWebなどは、別のレイヤーとして記録したい。PowerShellで動作する超簡易ブックマークを作れないだろうか?
○Swichで枠組みを試みる

変数にURLを入れておき、 switch構文でStart-Processで変数を起動すればいいと考える。

function bm {

$bookmark1 = "https://news.mynavi.jp"
$bookmark2 = "https://github.com/"
$bookmark3 = "https://google.co.jp"

$A = Read-Host "開くブックマーク名(変数)を入力"

switch ($A) {
"bookmark1" { Start-Process $bookmark1 }
"bookmark2" { Start-Process $bookmark2 }
"bookmark3" { Start-Process $bookmark3 }
}
}

が、ブックマーク変数とURLの対応が頭にないと当然に意味が無い。探してみると、Get-Variableがある。変数名を取得できるコマンドレットでアスタリスク(*)も機能する。

function bm {

$bookmark1 = "https://github.com/"
$bookmark2 = "https://github.com/trending"
$bookmark3 = "https://learn.microsoft.com/"

Get-Variable bookmark*

$A = Read-Host "開くブックマーク名を入力"

switch ($A) {
"bookmark1" { Start-Process $bookmark1 }
"bookmark2" { Start-Process $bookmark2 }
"bookmark3" { Start-Process $bookmark3 }
}

とすれば、bookmark変数を総覧できるので、表示を見ながら入力できる。

○配列とループでカイゼンする

一応、目的は達成されるのだが、設定するときの入力が面倒だ。配列を使ってURLを設定するように変える。

$bookmark = @(
"https://news.mynavi.jp"
"https://github.com/"
"https://google.co.jp"
)

また、以下のようにループで表示してやれば、ユーザー入力用の文字を作らなくても自動的に増やしてくれる。

for($i=0; $i -lt $bookmark.Count; $i++) {
Write-Host "$($i+1) : $($bookmark[$i])"
}

.
編集部おすすめ