Use PowerShell to generate a list of files and directories

前端 未结 5 492
予麋鹿
予麋鹿 2021-02-01 15:37

I\'m writing a PowerShell script to make several directories and copy a bunch of files together to \"compile\" some technical documentation. I\'d like to generate a manifest of

相关标签:
5条回答
  • 2021-02-01 16:06

    In your particular case what you want is Tree /f. You have a comment asking how to strip out the part at the front talking about the volume, serial number, and drive letter. That is possible filtering the output before you send it to file.

    $Path = "C:\temp"
    Tree $Path /F | Select-Object -Skip 2 | Set-Content C:\temp\output.tkt
    

    Tree's output in the above example is a System.Array which we can manipulate. Select-Object -Skip 2 will remove the first 2 lines containing that data. Also, If Keith Hill was around he would also recommend the PowerShell Community Extensions(PSCX) that contain the cmdlet Show-Tree. Download from here if you are curious. Lots of powerful stuff there.

    0 讨论(0)
  • 2021-02-01 16:06

    In Windows, navigate to the directory of interest

    Shift+ right click mouse -> Open PowerShell window here

    Get-ChildItem | tree /f > tree.log
    
    0 讨论(0)
  • 2021-02-01 16:16

    The following script will show the tree as a window, it can be added to any form present in the script

    function tree {
    
       [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
       [void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
    
       # create Window
       $Form = New-Object System.Windows.Forms.Form
       $Form.Text = "Files"
       $Form.Size = New-Object System.Drawing.Size(390, 390)
       # create Treeview-Object
       $TreeView = New-Object System.Windows.Forms.TreeView
       $TreeView.Location = New-Object System.Drawing.Point(48, 12)
       $TreeView.Size = New-Object System.Drawing.Size(290, 322)
       $Form.Controls.Add($TreeView)
    
       ###### Add Nodes to Treeview
       $rootnode = New-Object System.Windows.Forms.TreeNode
       $rootnode.text = "Root"
       $rootnode.name = "Root"
       [void]$TreeView.Nodes.Add($rootnode)
    
       #here i'm going to import the csv file into an array
       $array=@(Get-ChildItem -Path D:\personalWorkspace\node)
       Write-Host $array
       foreach ( $obj in $array ) {                                                                                                             
            Write-Host $obj
            $subnode = New-Object System.Windows.Forms.TreeNode
            $subnode.text = $obj
            [void]$rootnode.Nodes.Add($subnode)
         }
    
       # Show Form // this always needs to be at the bottom of the script!
       $Form.Add_Shown({$Form.Activate()})
       [void] $Form.ShowDialog()
    
       }
       tree
    
    0 讨论(0)
  • 2021-02-01 16:26

    The best and clear way for me is:

    PS P:\> Start-Transcript -path C:\structure.txt -Append
    PS P:\> tree c:\test /F
    PS P:\> Stop-Transcript
    
    0 讨论(0)
  • 2021-02-01 16:26

    You can use command Get-ChildItem -Path <yourDir> | tree >> myfile.txt this will output tree-like structure of a directory and write it to "myfile.txt"

    0 讨论(0)
提交回复
热议问题