potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

PowerShell 7 クリップボードの文字列から特定フォルダ以下のフォルダを開く

メイン

PowerShell 7でクリップボードの文字列から特定フォルダ以下のフォルダを開くソースコードです。

$basePath = <特定フォルダの絶対・相対パス>
$paths = (Get-Clipboard) -split "`r`n"
foreach ($path in $paths) {
    $fullpath = Join-Path $basePath $path
    if (Test-Path $fullpath -Type Container) {
        Invoke-Item $fullpath
    }
}

PowerShell 7関係の補足

変数と演算子

変数は$var(ドル記号+変数名)で参照します。演算子は他の言語と同じようにx op yと書きますが、比較演算子など一部の演算子表現は表記が特殊です。例えば「<」は-lt、「<=」は-leと書きます。詳細は公式ドキュメントの演算子(about_Operator)比較演算子(about_Comparison_Operators)をご覧ください。

文字列のエスケープ

文字列のエスケープにはバッククォート(グレイヴ・アクセント)「`」を使用します。

"abc`r`ndef"
#abc
#def

特殊な演算子

文字列の分割や結合は演算子-split-joinとして提供されます。例えば-splitは次のように使用します。

"abc`r`ndef`r`ngh`r`n" -split "`r`n"
#abc
#def
#gh

参考:about_split

関数の戻り値を使う

関数の戻り値を使うには関数を基本的に丸括弧で囲います。丸括弧がないと関数がどこまでを引数か判別できないためにエラーとなります。

$paths = (Get-Clipboard) -split "`r`n"

確実に引数がない場合は丸括弧なしでも大丈夫です。

$path = Get-Clipboard

foreachループ

C#などと同様に記述します。@(0, 1, 2, 3)は配列です。

foreach ($i in @(0, 1, 2, 3)) {
    $i
}
#0
#1
#2
#3

いくつかの関数

  • パスの結合:Join-Path path1 path2 ...
  • パスの存在確認:Test-Path $path
  • ディレクトリの存在確認:Test-Path $path -Type Container