Kambridge
Kambridge

Reputation: 11

Renaming many folders in PowerShell

I have over 1000+ files that have to be renamed.

The first set folder and/or files are grouped by location, so the first four characters are the same for each file; there are four-five different locations. I need to delete the first few characters of the folder's name.

Example:

Old File: ABC_Doe, Jane
New File: Doe, Jane

any suggestions as to the quickest way to carry this out?

I've tried all of the following:

  1st Attempt 
  $a = Get-ChildItem C:\example
  $b = Where-Object {$_.name -like “*ABC_*”}
  $cmdlet_name = “Rename-Item”
  $d = (cmdlet_name $a $b)
  invoke-expression $d

  2nd Attempt 
  $e = Get-ChildItem C:\example
  $f = $e.TrimStart (“ABC_”)

3rd Attempt

Rename-Item -{$_.name -like “*ASD*”, “”}

Upvotes: 1

Views: 4333

Answers (2)

Shay Levy
Shay Levy

Reputation: 126732

Try this, get all child items (files only), remove abc_ by replacing them (with nothing) and rename each file. To rename files in sub-directories add the -Recurse switch to the Get-ChildItem command:

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { ($_.BaseName -replace '^ABC_') + $_.Extension }

UPDATE

Actually, this should work as well and is much shorter (no need to append the file extension cause renaming is performed on the file name).

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { $_.Name -replace '^ABC_' }

Upvotes: 6

Isa
Isa

Reputation: 1

get-childItem ABC_* | rename-item -newname { $_.name -replace 'ABC_','' }

Source: get-help rename-item -full

Upvotes: 0

Related Questions