特定の階層のフォルダパスを一覧に出力する方法

コマンド関連のアイキャッチ画像 IT知識・技術

組織のファイルサーバーからSharePointなどへのイントラネットへデータを移動する際、現在の構成をそのまま移動できればSharePoint Migration Toolなどのツールを利用すればよいのですが、フォルダやファイルの権限設定などが複雑化している場合、丸ごと1か所に持っていく等の対応が難しい場合があるケースもあると思います。
その場合、フォルダに応じて適切な移動先を各部の責任者と確認しつつ決める必要がありますが、決める際に現在のフォルダと移動先の紐づけの一覧(マッピングリスト)を作成することで、移動計画の際に各部の担当者と状況を共有しながら移行を進められるので、こちらはおすすめの方法の一つです。
ただ、マッピングリストを作るために移動先を決める必要があるフォルダパスを一つずつExcelにコピーするのは面倒ですから、コマンドで簡単にフォルダパスのリストを作成する方法について紹介したいと思います。

目次
  1. 特定のフォルダの配下のフォルダ一覧を出力する
  2. カレントフォルダ配下のフォルダ一覧を出力する
  3. フォルダ階層を制限して一覧を出力する
  4. Excelに変換する

作業環境:
Windows10 20H2, ThinkPad X395

特定のフォルダの配下のフォルダ一覧を出力する

Windowsのdirコマンドを使用して、特定のフォルダ配下のフォルダ一覧を出力します。

dir /s /b /ad [フォルダパス] > [出力先ファイルパス][ファイル名]
記述例
dir /s /b /ad C:¥Windows > C:Windows\filelist.txt

カレントフォルダ配下のフォルダ一覧を出力する

現在のフォルダ配下のフォルダ一覧を出力する場合は、以下のようなコマンドになります。

dir /s /b /ad . > ファイル名.txt
記述例
.がカレントディレクトリを意味します。また出力先パスの先頭に%UserProfile%を指定すると、現在のログイン中アカウントの配下を指定できます。
dir /s /b /ad . > %UserProfile%\filelist.txt

フォルダ階層を制限して一覧を出力する

例えば、起点となるフォルダ(カレントフォルダ)から3階層目までだけのフォルダ一覧を出力したい場合、以下のようなコマンドになります。

dir /s /b /ad .| findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*\\*[^\\]*$" > ファイル名.txt
記述例
中間の[^\\]*\\を足したり減らしたりすることで、読み取る階層の深さを変えることができます。findstrコマンドをパイプでつなぐことで階層を指定し、そのままファイルに出力まで行います。
dir /s /b /ad .| findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*\\*[^\\]*$" > %userprofile%\downloads\filelist.txt

Excelに変換する

  1. 新規にExcelを開き、左メニューの「開く」から先ほど出力した.txtファイルを参照するか、WindowsエクスプローラーなどからExcelウィンドウへドラッグします。
  2. Excelに一覧が表示されるので、名前を付けて保存します。

まとめ

WindowsのDirコマンドは代表的なコマンドですが、思ったよりリストの出力のしかたについてコントロールできたので、また役立ちそうなコマンドがあれば紹介していきたいと思います。

コメント

タイトルとURLをコピーしました