クリスマス目前!商品レビューまとめ記事

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

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

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

もし、Windowsで、

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

上司

って依頼されたらどうしますか?

例えば、以下のようなフォルダでファイル名をリストアップするのにも結構な時間がかかるはず・・・。
1個、1個手打ちするなんてあり得ないですし、かと言ってF2キー押して1個、1個コピペしていくのも相当な時間がかかります・・・。
d1e9e338-aa10-4aa5-9754-9eea424f19a1
1個や2個、10個くらいまでならまだしも、数100個あるようなファイルリストを手動で作成しようと思ったら、それこそ至難のワザです。
(まぁ、時間にゆとりがあるならOKだけどw)

ithinkit

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

そんなときに役立つのが、今回紹介する「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コマンドでファイル名のみ取得することが出来ました。

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

ファイルリスト取得に際し、ファイルのフルパスを取得したい時もそれなりにあると思います。
そんなときは「/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以下のフォルダ直下のものだけをフルパスでリスト取得するにはどうすれば良いのでしょうか?

「C:\Windows」以下だけ取得したい。階層指定したい時は・・・

そんなときは以下のようにすると良いです。

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
[^\\]*\\の数を調節することで階層を指定することが可能。

どうですか。
こういった類のコマンドを知っておくだけでも業務効率は格段にアップします。

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

ithinkit

覚えておいてください。

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

コメントを残す

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

*

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