データフォルダなどで階層一覧を確認したい時にtreeコマンドが思い浮かびますが、パラメータが少なく指定したフォルダをすべて表示するために膨大になることがあります。
1 2 3 4 5 6 7 |
C:\>tree /? ドライブやパスのフォルダー構造を図式表示します。 TREE [ドライブ:][パス] [/F] [/A] /F 各フォルダーのファイル名を表示します。 /A 拡張文字ではなく、ASCII 文字で表示します。 |
やはり同じように考える人はいて、なるほどです。
Windowsのtreeコマンドで2階層目までだけを表示する方法
http://align-centre.hatenablog.com/entry/20090912/1252774157
findstrで行頭からの文字列を指定するとは勉強になります。
そこでWindows 7で検証も兼ねてバッチを作成してみました。
- 検証フォルダ階層
- 検証バッチファイル
- 1階層
- 2階層
- 3階層
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
C:\TEST ├─1 │ ├─1-1 │ │ ├─1-1-1 │ │ │ └─1-1-1-1 │ │ ├─1-1-2 │ │ └─1-1-3 │ ├─1-2 │ │ ├─1-2-1 │ │ ├─1-2-2 │ │ └─1-2-3 │ └─1-3 │ ├─1-3-1 │ ├─1-3-2 │ └─1-3-3 ├─2 │ ├─2-1 │ │ ├─2-1-1 │ │ │ └─2-1-1-1 │ │ ├─2-1-2 │ │ └─2-1-3 │ ├─2-2 │ │ ├─2-2-1 │ │ ├─2-2-2 │ │ └─2-2-3 │ └─2-3 │ ├─2-3-1 │ ├─2-3-2 │ └─2-3-3 └─3 ├─3-1 │ ├─3-1-1 │ │ └─3-1-1-1 │ ├─3-1-2 │ └─3-1-3 ├─3-2 │ ├─3-2-1 │ ├─3-2-2 │ └─3-2-3 └─3-3 ├─3-3-1 ├─3-3-2 └─3-3-3 |
取り敢えずtreedir.batとします。
・起点となるフォルダ名を表示
・1階層から3階層まで対応
・第一引数にフォルダを指定、第二引数に階層を指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@echo off : by rootlinks co., Ltd. set folder=%1 set depth=%2 if not defined folder goto usage if not defined depth goto usage :treedir if %2==1 ( tree %1 | findstr /r /c:"^.:" /c:"^├" /c:"^└" ) if %2==2 ( tree %1 | findstr /r /c:"^.:" /c:"^├" /c:"^│ ├" /c:"^│ └" /c:"^└" /c:"^ ├" /c:"^ └" ) if %2==3 ( tree %1 | findstr /r /c:"^.:" /c:"^├" /c:"^│ ├" /c:"^│ └" /c:"^└" /c:"^ ├" /c:"^ └" /c:"^│ │ ├" /c:"^│ │ └" /c:"^│ └" /c:"\│ ├" /c:"^ │ ├" /c:"^ │ └" /c:"^ ├" /c:"^ └" ) goto end :usage echo usage: treedir.bat folder depth :end |
1 2 3 4 5 |
C:\>treedir.bat C:\test 1 C:\TEST ├─1 ├─2 └─3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
C:\>treedir.bat c:\test 2 C:\TEST ├─1 │ ├─1-1 │ ├─1-2 │ └─1-3 ├─2 │ ├─2-1 │ ├─2-2 │ └─2-3 └─3 ├─3-1 ├─3-2 └─3-3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
C:\>treedir.bat c:\test 3 C:\TEST ├─1 │ ├─1-1 │ │ ├─1-1-1 │ │ ├─1-1-2 │ │ └─1-1-3 │ ├─1-2 │ │ ├─1-2-1 │ │ ├─1-2-2 │ │ └─1-2-3 │ └─1-3 │ ├─1-3-1 │ ├─1-3-2 │ └─1-3-3 ├─2 │ ├─2-1 │ │ ├─2-1-1 │ │ ├─2-1-2 │ │ └─2-1-3 │ ├─2-2 │ │ ├─2-2-1 │ │ ├─2-2-2 │ │ └─2-2-3 │ └─2-3 │ ├─2-3-1 │ ├─2-3-2 │ └─2-3-3 └─3 ├─3-1 │ ├─3-1-1 │ ├─3-1-2 │ └─3-1-3 ├─3-2 │ ├─3-2-1 │ ├─3-2-2 │ └─3-2-3 └─3-3 ├─3-3-1 ├─3-3-2 └─3-3-3 |