Add Scripts/Powershell/General Purpose/Directory Walker.md
This commit is contained in:
		
							
								
								
									
										50
									
								
								Scripts/Powershell/General Purpose/Directory Walker.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								Scripts/Powershell/General Purpose/Directory Walker.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,50 @@ | ||||
| **Purpose**: | ||||
| Sometimes you just need a basic script that outputs a pretty directory and file tree.  This script offers files and folders to ignore, and outputs a fancy directory tree. | ||||
|  | ||||
| ```powershell | ||||
| function Export-Tree { | ||||
|     param ( | ||||
|         [string]$Path = ".", | ||||
|         [string]$OutFile = "directory_tree.txt" | ||||
|     ) | ||||
|  | ||||
|     $global:TreeLines = @() | ||||
|     $global:IgnoreList = @( | ||||
|         ".git", | ||||
|         "Dependencies", | ||||
|         "Server", | ||||
|         "Agent" | ||||
|     ) | ||||
|  | ||||
|     function Walk-Tree { | ||||
|         param ( | ||||
|             [string]$Folder, | ||||
|             [string]$Prefix | ||||
|         ) | ||||
|  | ||||
|         $items = Get-ChildItem -Path $Folder -Force | Where-Object {  | ||||
|             $_.Name -ne "." -and $_.Name -ne ".." -and  | ||||
|             ($global:IgnoreList -notcontains $_.Name) | ||||
|         } | Sort-Object PSIsContainer, Name | ||||
|  | ||||
|         $count = $items.Count | ||||
|  | ||||
|         for ($i = 0; $i -lt $count; $i++) { | ||||
|             $item = $items[$i] | ||||
|             $connector = if ($i -eq $count - 1) { "└── " } else { "├── " } | ||||
|             $global:TreeLines += "$Prefix$connector$($item.Name)" | ||||
|             if ($item.PSIsContainer) { | ||||
|                 $newPrefix = if ($i -eq $count - 1) { "$Prefix    " } else { "$Prefix│   " } | ||||
|                 Walk-Tree -Folder $item.FullName -Prefix $newPrefix | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     Walk-Tree -Folder $Path -Prefix "" | ||||
|  | ||||
|     $global:TreeLines | Set-Content -Path $OutFile -Encoding UTF8 | ||||
| } | ||||
|  | ||||
| # Run it | ||||
| Export-Tree -Path "." -OutFile "directory_tree.txt" | ||||
| ``` | ||||
		Reference in New Issue
	
	Block a user