【PowerShell】コマンドプロンプトのdirコマンドを実行する方法

Windows10から11にアップグレードされたことに伴い、エクスプローラーでShift+右クリックで表示されるメニューから選べるCUIが、コマンドプロンプトからPowerShellに変更されました。

これまでコマンドプロンプトを使用していた方は、PowerShellに変更になり、今まで使っていたコマンドが使えなくなってしまった、ということもあるかもしれません。

この記事では、コマンドプロンプトで使用できる代表的なコマンドのひとつであるdirコマンドについて、PowerShellで同じことをする方法を解説いたします。

PowerShellの起動方法について

本題に入る前に、PowerShellの起動方法について説明します。

Windows11から、エクスプローラー上で右クリックをした時に表示されるメニューが変わりました。それに伴って、これまでShift+右クリックをしないと表示されなかったCUIの起動メニューが、右クリックだけで表示できるようになりました。

これまで通り、Shift+右クリックを押しても、同じようにPowerShellを起動することができます。「ターミナルで開く」と「PowerShell ウィンドウをここで開く」の2つがありますが、どちらを選択してもPowerShellが起動されます。

dirコマンドを実行する方法

ここから、dirコマンドと同様のことをPowerShellで実行する方法を見ていきましょう。

実は、オプションをつけずにdirコマンドを実行するだけなら、PowerShellでもできます。

実行コマンド:dir

PowerShell上でdirコマンドを実行した様子

本来、PowerShellでdirと同様の処理を行うには、Get-ChildItemというコマンドを使用するのですが、Get-ChildItemコマンドにはエイリアスが設定されていて、その中にdirが含まれています。そのため、dirを実行することで、間接的にGet-ChildItemコマンドが実行され、コマンドプロンプトのdirと同様の結果が得られます。

以下は、Get-ChildItemコマンドを実行した例です。

実行コマンド:Get-ChildItem

PowerShell上でGet-ChildItemコマンドを実行した様子

サブフォルダの中も合わせて表示する方法

コマンドプロンプトのdirコマンドでは、/sオプションをつけることで、サブフォルダの内容を再起的に表示することができます。

PowerShellでこれと同じことをするには、-sオプションを使用します。

コマンド:dir -s

この-sも、Get-ChildItemコマンドの-Recurseオプションのエイリアスです。ですので、dir -sコマンドは以下のコマンドを実行しているのと同じです。

コマンド:Get-ChildItem -Recurse

dir -sGet-ChildItem -Recurseを実行すると以下のような結果が得られます。

dir -sを実行した結果

PowerShell上でdir -sコマンドを実行した様子

Get-ChildItem -Recurseを実行した結果

PowerShell上でGet-ChildItem -Recurseコマンドを実行した様子

ファイル名だけを表示する方法

dirコマンドを実行すると、ファイル名以外にも更新日時や権限情報などが表示されます。ファイル名だけを表示したい場合には、コマンドプロンプトでは/bオプションを使用していました。

コマンド:dir /b

PowerShellで同様のことを実行するためには、以下のコマンドを使用します。

コマンド:Get-ChildItem | ForEach-Object{ $_.Name }

上記コマンドを実行すると、以下のような結果が得られます。

PowerShell上でGet-ChildItemを使用し、ファイル名だけを出力した様子

/sオプションとは異なり、/bには対応するエイリアスが設定されたPowerShellのオプションはありません。そのため、dirコマンドを使用してファイル名だけを出力することはできません。

上記のGet-ChildItemコマンドでは、Get-ChildItemの出力結果をパイプを使用して後続のコマンドに引き渡しています。ForEach-Objectを使用して、出力結果のひとつひとつに対してカッコ内の処理を実行し、対象のファイル名を出力しています。

おわりに

本記事では、コマンドプロンプトのdirコマンドと同様の処理をPowerShellを使用して実行する方法を解説しました。

コマンドプロンプトで使用していたコマンドの中には、そのままPowerShellで実行できるものもあり、そういうものは比較的とっつきやすいかと思います。

しかし、/bのように、PowerShellで簡単には置き換えられないものもあります。標準のターミナルがPowerShellに置き換えられたということは、将来的にはPowerShellが主流になるということかもしれません。少しずつでも、PowerShellに馴染んでいくのが良いと思います。