組織のファイルサーバーからSharePointなどへのイントラネットへデータを移動する際、現在の構成をそのまま移動できればSharePoint Migration Toolなどのツールを利用すればよいのですが、フォルダやファイルの権限設定などが複雑化している場合、丸ごと1か所に持っていく等の対応が難しい場合があるケースもあると思います。
その場合、フォルダに応じて適切な移動先を各部の責任者と確認しつつ決める必要がありますが、決める際に現在のフォルダと移動先の紐づけの一覧(マッピングリスト)を作成することで、移動計画の際に各部の担当者と状況を共有しながら移行を進められるので、こちらはおすすめの方法の一つです。
ただ、マッピングリストを作るために移動先を決める必要があるフォルダパスを一つずつ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%を指定すると、現在のログイン中アカウントの配下を指定できます。
.がカレントディレクトリを意味します。また出力先パスの先頭に%UserProfile%を指定すると、現在のログイン中アカウントの配下を指定できます。
dir /s /b /ad . > %UserProfile%\filelist.txt
フォルダ階層を制限して一覧を出力する
例えば、起点となるフォルダ(カレントフォルダ)から3階層目までだけのフォルダ一覧を出力したい場合、以下のようなコマンドになります。
dir /s /b /ad .| findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*\\*[^\\]*$" > ファイル名.txt
記述例
中間の[^\\]*\\を足したり減らしたりすることで、読み取る階層の深さを変えることができます。findstrコマンドをパイプでつなぐことで階層を指定し、そのままファイルに出力まで行います。
中間の[^\\]*\\を足したり減らしたりすることで、読み取る階層の深さを変えることができます。findstrコマンドをパイプでつなぐことで階層を指定し、そのままファイルに出力まで行います。
dir /s /b /ad .| findstr /r "^[^\\]*\\*[^\\]*\\*[^\\]*\\*[^\\]*$" > %userprofile%\downloads\filelist.txt
Excelに変換する
- 新規にExcelを開き、左メニューの「開く」から先ほど出力した.txtファイルを参照するか、WindowsエクスプローラーなどからExcelウィンドウへドラッグします。
- Excelに一覧が表示されるので、名前を付けて保存します。
まとめ
WindowsのDirコマンドは代表的なコマンドですが、思ったよりリストの出力のしかたについてコントロールできたので、また役立ちそうなコマンドがあれば紹介していきたいと思います。
コメント