あいしんくいっとオススメ商品レビュー

windowsでファイルリストを取得するならdirコマンドが便利!階層指定も出来るよ。

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

本記事対象
階層指定してファイルリストを取得する方法が知りたい方

ども。あいしんくいっと(@ithinkitnet)です。

もし、Windowsで、

特定フォルダ内にあるファイル名のリストを作成してくれる?

上司

って依頼されたらどうしますか?
例えば、以下のようなフォルダでファイル名をリストアップするのにも結構な時間がかかるはず・・・。

1個、1個手打ちするなんてあり得ないですし、かと言ってF2キー押して1個、1個コピペしていくのも相当な時間がかかります・・・。
d1e9e338-aa10-4aa5-9754-9eea424f19a1

1個や2個、10個くらいまでならまだしも、数100個あるようなファイルリストを手動で作成しようと思ったら、それこそ至難のワザです。
(まぁ、時間にゆとりがあるならOKだけどw)

ithinkit

ファイルリスト手動作成とか、苦痛以外の何者でもない

Windowsでファイルリストを取得するのに役立つのが「dir」コマンドです。オプションで階層指定も可能なので便利です。

dirコマンドでファイルリスト取得

dirコマンドの使い方です。(コマンドプロンプトのHELPから抜粋)

dirコマンド

dir /?
ディレクトリ中のファイルとサブディレクトリを一覧表示します。
DIR [ドライブ:][パス][ファイル名] [/A[[:]属性]] [/B] [/C] [/D] [/L] [/N]
[/O[[:]ソート順]] [/P] [/Q] [/R] [/S] [/T[[:]タイムフィールド]] [/W] [/X] [/4]
[ドライブ:][パス][ファイル名]
一覧表示するドライブ、ディレクトリ、またはファイルを指定します。

コマンドオプションはたくさんありますが、覚えておくと便利なのは「/b」と「/s」位でしょうか。

ファイル名のみ取得

ファイル名のみを取得したいなら「/b」オプションをつけて実行します。
では、冒頭に挙げたファイルリストを取得してみましょう。

ファイル名のみ取得

C:\Users\Administrator>dir /b C:\Windows
ADFS
AppCompat
apppatch
AppReadiness
assembly
bfsvc.exe
Boot
Branding
CbsTemp
~略~

dirコマンドでファイル名のみ取得することが出来ました。

MEMO

dirコマンドはローカルPCだけでなく、リモートPCのファイルリストも取得可能。(NASとか)

リモートPC指定

dir /b \\<IP or ホスト名>

ファイルのフルパスを取得

ファイルリスト取得に際し、ファイルのフルパスを取得したい時もそれなりにあると思います。
そんなときは「/b」と「/s」オプションを同時に指定します。

では、冒頭に挙げたファイルリストを取得してみましょう。

ファイルリスト取得

C:\Users\Administrator>dir /s /b C:\Windows
~略~
C:\Windows\ADFS\lv
C:\Windows\ADFS\Microsoft.IdentityServer.Deployment.Core.dll
C:\Windows\ADFS\nl
C:\Windows\ADFS\no
~略~

おや?
C:\Windows以下のフォルダパスまで取得してしまいました。
dirコマンドは再帰的に処理するようになっているので、C:\Windows以下のフォルダのさらに下のフォルダパスまで取得してしまいます。
C:\Windows以下のフォルダ直下のものだけをフルパスでリスト取得するにはどうすれば良いのでしょうか?

dirで階層指定したい時は・・・

dirコマンドで「C:\Windows」以下のフォルダリストのみ取得したい。そんなときはfindstrコマンドを組み合わせると良いです。

C:Windows以下フォルダだけ取得

dir /s /b C:\Windows | findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*$"
コマンド実行例

C:\Users\Administrator> dir /s /b C:\Windows | findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*$"
C:\Windows\ADFS
C:\Windows\AppCompat
C:\Windows\apppatch
C:\Windows\AppReadiness
C:\Windows\assembly
C:\Windows\bfsvc.exe
C:\Windows\Boot
C:\Windows\Branding
C:\Windows\CbsTemp
~略~
C:Users以下フォルダだけ取得

C:\Windows\system32>dir /s /b "C:\Users\" | findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*$"
C:\Users\Administrator
C:\Users\Public

C:\Windows\system32>

findstrをパイプでつなぎ、正規表現を利用して階層指定します。

MEMO
[^\\]*\\の数を調節することで階層を指定することが可能。


dirコマンドでファイルリストが取得出来るということを知っておくだけでも業務効率は格段にアップします。

Windowsで特定フォルダのファイルリストを取得する際は「dir」コマンドを利用する。

ithinkit

ファイルリストはdirコマンドで取得出来る。覚えておいてください。

以上、あいしんくいっとでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)