Windowsファイルツリー構造の表示とテキスト保存

#はじめに

マニュアルや説明文を作成時に、Windowsのファイルのツリー構造図が欲しくなることがあります。

コマンドプロンプトの「tree」コマンドを使えば簡単に作成できます。

#treeコマンド
##treeコマンドのヘルプ

メニューからコマンドプロンプトを起動します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/222823/658da219-0a78-1af9-b851-ca444682f8f9.jpeg" width=200>

「/?」オプションでヘルプが表示されます

```
C:\>tree /?
ドライブやパスのフォルダー構造を図式表示します。

TREE [ドライブ:][パス] [/F] [/A]

   /F   各フォルダーのファイル名を表示します。
   /A   拡張文字ではなく、ASCII 文字で表示します。
```

##カレントディレクトリのツリー表示

表示したいディレクトリにカレントを移動

```
C:\>cd C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient
```

ツリー構造表示

```
C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient>tree
フォルダー パスの一覧
ボリューム シリアル番号は 567F-07E0 です
C:.
└─GuiClient
    ├─bin
    │  └─Debug
    ├─obj
    │  └─x86
    │      └─Debug
    │          └─TempPE
    └─Properties
```

##パスで指定したフォルダのツリー構造表示

カレントディレクトリにあるフォルダ名を指定すると、その中のツリー構造が表示されます。

```
C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient>tree GuiClient
フォルダー パスの一覧
ボリューム シリアル番号は 567F-07E0 です
C:\USERS\HOGE\DOCUMENTS\VISUAL STUDIO 2010\PROJECTS\GUICLIENT\GUICLIENT
├─bin
│  └─Debug
├─obj
│  └─x86
│      └─Debug
│          └─TempPE
└─Properties
```

※フォルダ名にスペースがある場合「"」で囲います。

```
C:\Users\hoge\Documents>tree "Visual Studio 2010"
```

##ファイル名も表示

「/f」オプションでファイル名が表示されます。

```
C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient>tree /f
フォルダー パスの一覧
ボリューム シリアル番号は 567F-07E0 です
C:.
│  GuiClient.sln
│
└─GuiClient
    │  Form1.cs
    │  Form1.Designer.cs
    │  Form1.resx
    │  GuiClient.csproj
    │  Program.cs
    │
    ├─bin
    │  └─Debug
    │          GuiClient.exe
    │          GuiClient.pdb
    │          GuiClient.vshost.exe
    │          GuiClient.vshost.exe.manifest
    │
    ├─obj
    │  └─x86
    │      └─Debug
    │          │  DesignTimeResolveAssemblyReferences.cache
    │          │  DesignTimeResolveAssemblyReferencesInput.cache
    │          │  GenerateResource.read.1.tlog
    │          │  GenerateResource.write.1.tlog
    │          │  GuiClient.csproj.FileListAbsolute.txt
    │          │  GuiClient.exe
    │          │  GuiClient.Form1.resources
    │          │  GuiClient.pdb
    │          │  GuiClient.Properties.Resources.resources
    │          │  ResolveAssemblyReference.cache
    │          │
    │          └─TempPE
    └─Properties
            AssemblyInfo.cs
            Resources.Designer.cs
            Resources.resx
            Settings.Designer.cs
            Settings.settings
```

##ツリー構造をファイルに書きだす

「tree」コマンドの実行結果をテキストファイルにリダイレクトします。

```
C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient>tree /f > index.tx
t
```

ファイルが出来ているか確認

```
C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 567F-07E0 です

 C:\Users\hoge\Documents\Visual Studio 2010\Projects\GuiClient のディレクトリ

2018/05/08  13:17    <DIR>          .
2018/05/08  13:17    <DIR>          ..
2018/05/08  13:03    <DIR>          GuiClient
2013/01/10  13:03               869 GuiClient.sln
2018/05/08  13:17             1,259 index.txt
               2 個のファイル               2,128 バイト
               3 個のディレクトリ  1,416,733,081,600 バイトの空き領域
```

ファイルの中身
おもしろいことに、index.txtが既に含まれています。

```txt:index.txt
フォルダー パスの一覧
ボリューム シリアル番号は 567F-07E0 です
C:.
│  GuiClient.sln
│  index.txt
│  
└─GuiClient
    │  Form1.cs
    │  Form1.Designer.cs
    │  Form1.resx
    │  GuiClient.csproj
    │  Program.cs
    │  
    ├─bin
    │  └─Debug
    │          GuiClient.exe
    │          GuiClient.pdb
    │          GuiClient.vshost.exe
    │          GuiClient.vshost.exe.manifest
    │          
    ├─obj
    │  └─x86
    │      └─Debug
    │          │  DesignTimeResolveAssemblyReferences.cache
    │          │  DesignTimeResolveAssemblyReferencesInput.cache
    │          │  GenerateResource.read.1.tlog
    │          │  GenerateResource.write.1.tlog
    │          │  GuiClient.csproj.FileListAbsolute.txt
    │          │  GuiClient.exe
    │          │  GuiClient.Form1.resources
    │          │  GuiClient.pdb
    │          │  GuiClient.Properties.Resources.resources
    │          │  ResolveAssemblyReference.cache
    │          │  
    │          └─TempPE
    └─Properties
            AssemblyInfo.cs
            Resources.Designer.cs
            Resources.resx
            Settings.Designer.cs
            Settings.settings
            
```