PowerShell
0

PowerShellで大量のファイルのリストを作ったり、加工してプログラムで使ったり

特定のファイルフォルダ内のリストを取得してなんらかの処理を行いたい というときはよくあると思います。
今までだと、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

これで、ファイル名の一覧を,区切りで結合した文字列が、クリップボードに貼り付きます。あとはソースコードに貼り付けるだけ。

この辺のコマンドは基本中の基本ですが、意外と応用が利きそうですし覚えておくと良さそうです。