ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

DonationCoder.com Software > Post New Requests Here

Does any folder in tree have more than one file in it?

<< < (2/7) > >>

nkormanik:
My bad.  Not sure how to word it.  Top-level, as opposed to out in a branch?

Please see images:

Does any folder in tree have more than one file in it?

In the case of Garth, there are two files nested.  Only one in any particular folder.

Does any folder in tree have more than one file in it?

In the case of Wende, there are also two files nested.  But they reside in one single folder.

mtof.exe treats both of these scenarios the same.

It's the Wende case I want to flag.



c.gingerich:
Ok so you want it to go deeper than one folder if I am understanding.

nkormanik:
I had to modify my post above, to get the images right.  See if that helps to explain.

Using an actual tree analogy, only ONE BIRD is allowed to rest on any ONE BRANCH.  If TWO BIRDS are resting together on any single branch, must call 911.  (Police state, ya know.)

c.gingerich:
@nkormanik - I have updated mtof. Please give it a try and let me know.

4wd:
Something simple in PowerShell because I wanted to see how to get things into a ListView - was pretty easy after I dumped trying to get it all into a multi-dimensional array first Woohoo! worked out how to create one  :D

Does any folder in tree have more than one file in it?

EBO.ps1

--- Code: PowerShell ---<# This form was created using POSHGUI.com  a free online gui designer for PowerShell.NAME    EBO.ps1#> #region begin GUI{ Add-Type -AssemblyName System.Windows.Forms[System.Windows.Forms.Application]::EnableVisualStyles() $Form                            = New-Object system.Windows.Forms.Form$Form.ClientSize                 = '400,579'$Form.text                       = "EBO"$Form.BackColor                  = "#b8e986"$Form.TopMost                    = $false $ListView1                       = New-Object system.Windows.Forms.ListView$ListView1.View                  = 'Details'$ListView1.MultiSelect           = $false$ListView1.GridLines             = $true$ListView1.width                 = 369$ListView1.height                = 442$ListView1.Anchor                = 'top,right,bottom,left'$ListView1.location              = New-Object System.Drawing.Point(15,100) $TextBox1                        = New-Object system.Windows.Forms.TextBox$TextBox1.multiline              = $false$TextBox1.width                  = 268$TextBox1.height                 = 20$TextBox1.location               = New-Object System.Drawing.Point(15,27)$TextBox1.Font                   = 'Microsoft Sans Serif,10' $Button1                         = New-Object system.Windows.Forms.Button$Button1.text                    = "..."$Button1.width                   = 28$Button1.height                  = 25$Button1.location                = New-Object System.Drawing.Point(291,26)$Button1.Font                    = 'Microsoft Sans Serif,10' $Button2                         = New-Object system.Windows.Forms.Button$Button2.text                    = "Start"$Button2.width                   = 60$Button2.height                  = 25$Button2.location                = New-Object System.Drawing.Point(325,26)$Button2.Font                    = 'Microsoft Sans Serif,10' $Button3                         = New-Object system.Windows.Forms.Button$Button3.text                    = "Death by File Size"$Button3.width                   = 140$Button3.height                  = 25$Button3.location                = New-Object System.Drawing.Point(15,63)$Button3.Font                    = 'Microsoft Sans Serif,10' $Button4                         = New-Object system.Windows.Forms.Button$Button4.text                    = "Death by Bit Rate"$Button4.width                   = 140$Button4.height                  = 25$Button4.location                = New-Object System.Drawing.Point(244,63)$Button4.Font                    = 'Microsoft Sans Serif,10' $Label1                          = New-Object system.Windows.Forms.Label$Label1.Text                     = 'Double-click folder to open'$Label1.AutoSize                 = $true$Label1.Width                    = 100$Label1.Height                   = 10$Label1.Anchor                   = 'bottom,left'$Label1.Location                 = New-Object System.Drawing.Point(120,552)$Label1.Font                     = 'Microsoft Sans Serif,10' $ToolTip1                        = New-Object System.Windows.Forms.ToolTip$ToolTip1.AutomaticDelay         = 500$ToolTip1.IsBalloon              = $true$ToolTip1.SetToolTip($Button4, "Keep highest bit rate file")$Form.controls.AddRange(@($Button4)) $ToolTip2                        = New-Object System.Windows.Forms.ToolTip$ToolTip2.AutomaticDelay         = 500$ToolTip2.IsBalloon              = $true$ToolTip2.SetToolTip($Button3, "Keep largest file")$Form.controls.AddRange(@($Button3)) $ToolTip3                        = New-Object System.Windows.Forms.ToolTip$ToolTip3.AutomaticDelay         = 500$ToolTip3.IsBalloon              = $true$ToolTip3.SetToolTip($Button1, "Select folder")$Form.controls.AddRange(@($Button1)) $Form.controls.AddRange(@($ListView1,$TextBox1,$Button1,$Button2,$Button3,$Button4,$Label1)) #region gui events {$ListView1.Add_DoubleClick({  Start-Process ($ListView1.SelectedItems).Text}) $Button3.Add_Click({  Murder-Them Size}) $Button4.Add_Click({  Murder-Them BitRate}) $Button2.Add_Click({  $ListView1.Clear() | Out-Null  $ListView1.Columns.Add('Folder') | Out-Null  $ListView1.Columns.Add('Files') | Out-Null   Get-Folders $TextBox1.Text}) $Button1.Add_Click({  $objForm = New-Object System.Windows.Forms.FolderBrowserDialog  $objForm.Description = "Select folder"  $objForm.SelectedPath = [System.Environment+SpecialFolder]'MyComputer'  $objForm.ShowNewFolderButton = $false  $result = $objForm.ShowDialog()  if ($result -eq "OK") {    $TextBox1.Text = $objForm.SelectedPath  } else {    $TextBox1.Text = ""  }}) #endregion events }#endregion GUI } #Write your logic code hereAdd-Type -AssemblyName Microsoft.VisualBasic Function Murder-Them {  param (    [string]$sort  )  Write-Host '---'  for ($i = 0; $i -lt $ListView1.Items.Count; $i++ ) {    $files = (Get-MetaData -path $ListView1.Items[$i].Text .mp3)    $temp = @()    for ($j = 0; $j -lt $files.Count; $j++) {      $temp += ,@( $files[$j].'Path', (((Get-Item $files[$j].'Path').Length).ToString()).PadLeft(20, '0') , ($files[$j].'Bit rate' -replace '.{4}$').PadLeft(4, '0') )    }     if ($sort -eq 'Size') {      $temp = $temp | Sort-Object {$_[1]}    } else {      $temp = $temp | Sort-Object {$_[2]}    }     for ($k = 0; $k -lt $temp.Count - 1; $k++) {      [Microsoft.VisualBasic.FileIO.FileSystem]::DeleteFile("$($temp[$k][0])",'OnlyErrorDialogs','SendToRecycleBin')#      Remove-Item -Path "$($temp[$k][0])"    }  }} Function Get-MetaData {  PARAM (    [PARAMETER(Mandatory=$true)]    [string]$path = "",    [PARAMETER( Mandatory=$true, HelpMessage="extension eg. .mp3, .txt or .mov")]    [string]$type = "", # 'mp3'    [switch]$recurse  )  if ($recurse) {    $LPath = Get-ChildItem -Path $path -Directory -Recurse  } else {    $LPath = $path  }   $DirectoryCount = 1  $RetrievedMetadata = $true  $OutputList = New-Object 'System.Collections.generic.List[psobject]'   Foreach ($pa in $LPath) {    $shell = New-Object -ComObject shell.application     if ($recurse) {      $objshell = $shell.NameSpace($pa.FullName)    } else {      $objshell = $shell.NameSpace($pa)    }    #Build data list    $count = 0     #Filter on filetype    Measure-Command -Expression { $filter = $objshell.items() | where {$_.path -match $type} } | Out-File -FilePath K:\test.txt    foreach ($file in $filter) {      if ($RetrievedMetadata) {        # Build metanumbers        Write-Verbose "Building MetaIndex for filetype $type"        $Metanumbers = New-Object -TypeName 'System.Collections.Generic.List[int]'        for ($a = 0; $a -le 400; $a++) {          if ($objshell.GetDetailsOf($file, $a)) {            $Metanumbers.Add([int]$a)          }            }        $RetrievedMetadata = $false        Write-Verbose "$($Metanumbers.Count) entries in MetaIndex for filetype $type"          }       $count++      $CurrentDirectory = Get-ChildItem -Path $file.path      try {        Write-Progress -Activity " Getting metadata from $DirectoryCount/$($LPath.count) $($CurrentDirectory[0].DirectoryName)" -Status "Working on $count/$($filter.count) - $($file.Name)" -PercentComplete (($count / $filter.count) * 100) -ErrorAction stop      } catch {}       #Build Hashtable for each file      $Hash = @{}      foreach ($nr in $Metanumbers) {        $PropertyName = $($objshell.GetDetailsOf($objshell.Items, $nr))        $PropertyValue = $($objshell.GetDetailsOf($File, $nr))        $Hash[$PropertyName] = $PropertyValue      }                  $Hash.Remove("")      $FileMetaData = New-Object -TypeName PSobject -Property $hash      $OutputList.Add($FileMetaData)      $hash = $null    }    $DirectoryCount++          }  Write-Verbose "MetaData for $($OutputList.count) files found"  return $OutputList} Function Get-Folders {  param (    [string]$path  )  $a = Get-ChildItem $path -Recurse -Directory  for ($i = 0; $i -lt $a.Count; $i++) {    $b = (Get-ChildItem $a[$i].FullName -File | Measure-Object).Count    if ($b -gt 1) {      $ListView_Item = New-Object System.Windows.Forms.ListViewItem($a[$i].FullName)      $ListView_Item.SubItems.Add($b)      $ListView1.Items.AddRange(($ListView_Item))    }  }  $ListView1.AutoResizeColumn(1, 1)  $ListView1.AutoResizeColumn(0, 2)} [void]$Form.ShowDialog()
Does any folder in tree have more than one file in it?Does any folder in tree have more than one file in it?

Does any folder in tree have more than one file in it?Does any folder in tree have more than one file in it?
The one marked VBR bit rate is actually 224kHz that's why it's remained.

Still no error checking :P

No progress indicator either  :-[

PS. Forgot to mention it deletes to the Recycle Bin.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version