【PowerShell】フォルダ名一覧を取得してテキストファイルとして出力~ことはじめ~

どうも!リョクちゃです。

ひょんなことからPowerShellを使い始めたので、自身の勉強ノートも兼ねて

いくつか記事にしていきます。

1回目は、とあるフォルダにあるすべてのフォルダの名前をひとまとめにして、

テキストファイルに出力するといった方法を紹介していきます。

とはいうのも、フォルダを作りすぎてしまって、どんなフォルダがあるのかを

まとめたいときに手動でやるのも非効率だなと感じ、

効率化させようと思ったのがきっかけです。

同様のことをやろうとしている人の参考になれば嬉しいです。



PowerShellとは

Microsoftが開発したスクリプト言語および

キャラクターユーザーインターフェイス(CUI) の1つです。

Windows環境で使える、コマンドプロンプトの上位にあたる

CUIといえるのではないでしょうか?

Windows10では標準搭載され、Microsoftが推奨しているのも特徴的です。

コマンドプロンプトとの違い

「コマンドプロンプト」はどちらも同じCUIですが、後発のPowerShellは

「コマンドプロンプト」が抱えているいくつかの問題点を改良した

作りになっている点が注目ポイントです。

拡張子

PowerShellの拡張子は.ps1で表されます。

PowerShellの起動

Windows10であれば、タスクバー左の虫眼鏡アイコンのある検索欄

“ここに入力して検索”にpowershellと入力すると、下図のような状態になるかと思います。

赤枠で囲まれたアプリを立ち上げると、PowerShellが立ち上がります。

PowerShellプログラミング

スポンサーリンク




フォルダ名一覧を取得

フォルダ名一覧を取得するには、以下のコマンドを使用します。

Get-ChildItem <オプション引数>

オプション引数には、よく使われるモノとして
  • -Path : どの場所で一覧を取得するか明示してあげるための引数
  • -Include : 探したいファイルの拡張子
  • -Recurse : -Pathで指定したフォルダのサブフォルダも含めて検索

このままだと、Get-ChildItemではファイル名の取得もできてしまうので、
以下のコマンドを挟んで、フォルダのみを取得できるようにします。

Get-ChildItem <オプション引数> | Where-Object { $_.PSIsContainer}

もしくは

Get-ChildItem <オプション引数> | ?{ $_.PSIsContainer}
こうすることで、取得することができます。

例) PowerShell_Testフォルダ内にあるすべてのフォルダ名を取得してみます。

コマンドは

結果として

と受け取ることができます。

結果にはフォルダの名前だけではなく、最終更新日とモード、長さが取得されます。

名前だけを取得したい場合は、コマンドを()で囲み、.nameと入力することで
名前のみを取得することができます。

もしくは

Select-Objectというコマンドを組み合わせることで名前のみを取得することも可能です。

Select-Objectでは、取得した属性を絞ることができます。



テキストファイルの作成

フォルダ名の取得ができたので、今度は結果をテキストファイルに出力していきます。

テキストファイルを作成するコマンドとしては、

Out-File <作成するファイル名>

これも同様に挟むことで組み合わせて使います。

もしくは

※こちらの場合、ヘッダとして余計な文字が含まれます。

以上、フォルダ名一覧を取得して、テキストファイルを作成することに成功しました。

コマンドプロンプトで行うよりも簡単に扱えて、便利だなと感じました。

しかもコマンドを組み合わせることで、様々な用途に応じた使い方の切り分けができるので

いいなと感じています。

これから勉強して、業務の効率化ができるよう目指していきます。

まとめ

フォルダ名一覧を取得して、テキストファイルに出力する方法を紹介してきました。

PowerShellって便利ですね……バッチファイルとは違ってわかりやすく、

慣れてしまうと複雑なこともPowerShellでやらせたくなります。

オブジェクト指向のプログラミングを経験された方ならPowerShellのが掴みやすくて

入りやすいかもしれないですね。

次回は、よりプログラムちっくな話でも出来たらなと思います。

最後までお読みいただき、ありがとうございます。

スポンサーリンク