FatalBulletHit

Bulk File Renamer

Mar 13th, 2018 (edited)
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # https://pastebin.com/Aq7aBPCx
  2. # PowerShell solution to bulk rename files (e.g. "2068227794 (0x8f860be3).Wwise" to "0x8f860be3_00646.Wwise")
  3. # This is just an example, adjust this to your needs.
  4.  
  5. $Host.UI.RawUI.WindowTitle = 'Bulk File Renamer'
  6. $source = "C:\adjust\path"
  7.  
  8. $start = (Get-Date)
  9.  
  10. Get-ChildItem -Path $source -File -Recurse -Include "* (0x*).*" | ForEach-Object {
  11.  
  12.     if ($prev_dir -ne $_.DirectoryName) {
  13.  
  14.         $hex_list = $null
  15.         $prev_dir = $_.DirectoryName
  16.         $hex_list = New-Object System.Collections.Hashtable
  17.  
  18.     }
  19.  
  20.     $hex_name = ($_.BaseName).Split('()')[1]
  21.     $cur_hex = ($_.DirectoryName + "\" + $hex_name)
  22.  
  23.     if (Test-Path ($cur_hex + $_.Extension)) {
  24.  
  25.         $new_name1 = ($hex_name + "_00001" + $_.Extension)
  26.         $new_name2 = ($hex_name + "_00002" + $_.Extension)
  27.         $old_name = ($cur_hex + $_.Extension)
  28.         Rename-Item -Path $old_name -NewName $new_name1
  29.         Rename-Item -Path $_ -NewName $new_name2
  30.         Write-Host "Renamed '$old_name' to '$new_name1' `nRenamed '$_' to '$new_name2'"
  31.  
  32.     } elseif (Test-Path ($cur_hex + "_00001" + $_.Extension)) {
  33.  
  34.         if ($hex_list.Contains($cur_hex)) {
  35.  
  36.             $i = $hex_list.Item($cur_hex) + 1
  37.             $n = "_{0:D5}" -f $i
  38.             $hex_list.Remove($cur_hex)
  39.             $hex_list.Add($cur_hex, $i)
  40.  
  41.         } else {
  42.  
  43.             $n = "_00001"
  44.             $i = 1
  45.  
  46.             while (Test-Path ($cur_hex + $n + $_.Extension)) {
  47.  
  48.                 $i++
  49.                 $n = "_{0:D5}" -f $i
  50.  
  51.             }
  52.  
  53.             $hex_list.Add($cur_hex, $i)
  54.  
  55.         }
  56.  
  57.         $new_name = ($hex_name + $n + $_.Extension)
  58.         Rename-Item -Path $_ -NewName $new_name
  59.         Write-Host Renamed `'$_`' to `'$new_name`'
  60.  
  61.     } else {
  62.  
  63.         $new_name = ($hex_name + $_.Extension)
  64.         Rename-Item -Path $_ -NewName $new_name
  65.         Write-Host Renamed `'$_`' to `'$new_name`'
  66.  
  67.     }
  68. }
  69.  
  70. Write-Host ((Get-Date) - $start).ToString("hh\:mm\:ss\.fff")
Add Comment
Please, Sign In to add comment