特定のファイルフォルダ内のリストを取得してなんらかの処理を行いたい というときはよくあると思います。
今までだと、dir
コマンドで取得したデータをテキストエディタにコピーしてなんとかかんとか・・・ とかしなければならなかったのですが、PowerShellだとコマンドだけである程度のところまでいけます。
とりあえず基本:ファイル名のみの取得
ls *.png
などを使って、その名前部分のみを取得します。
$s = ls *.exe
$s.Name
こう書いてもいけます
(ls *.exe).Name
ファイルリストの特定の文字列などを取り除く
例えば"○○-△△.png"などといったファイルが大量に並んでいるフォルダで、○○のみの一覧を作りたいとき
$s = ls *.png
$n = $s.Name. -replace '-\w+.png$' | Get-Unique
-replace
句の引数には正規表現が使えます。マッチした部分を削除したうえで、重複のない名前のリストを作ります。
さらに取得したデータを、そのままプログラムで使いたいとき
ほんとは各種プログラム言語のファイル処理関数などを使うべきところでしょうが、ちょっとしたコードだとそれを使うのも面倒です。そんなときも、PowerShellなら簡単
$s = ls *.png
$n = $s.Name. -replace '-\w+.png$' | Get-Unique
$n -split "\n" -join "," | CLIP
これで、ファイル名の一覧を,区切りで結合した文字列が、クリップボードに貼り付きます。あとはソースコードに貼り付けるだけ。
この辺のコマンドは基本中の基本ですが、意外と応用が利きそうですし覚えておくと良さそうです。