7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

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

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?