Back to Blog
Advanced2025-01-199 min read

Bulk Rename Files with PowerShell: Complete Script Guide

Bulk Rename Files with PowerShell: Complete Script Guide

PowerShell is the most powerful built-in tool for batch renaming on Windows. Here are copy-paste scripts for every scenario.

Getting Started

Open PowerShell in your folder: 1. Open folder in File Explorer 2. Shift + Right-click 3. Select "Open PowerShell window here"

Basic Rename Scripts

Add prefix to all files

Get-ChildItem | Rename-Item -NewName { "prefix-" + $_.Name }

Add suffix before extension

Get-ChildItem | Rename-Item -NewName { 
  $_.BaseName + "-suffix" + $_.Extension 
}

Replace text in filename

Get-ChildItem | Rename-Item -NewName { 
  $_.Name -replace "old","new" 
}

Numbering Scripts

Sequential numbering

$i = 1
Get-ChildItem *.jpg | ForEach-Object {
  Rename-Item $_ ("photo-{0:D3}.jpg" -f $i++)
}

Numbering with original name

$i = 1
Get-ChildItem *.jpg | ForEach-Object {
  Rename-Item $_ ("{0:D3}-{1}" -f $i++, $_.Name)
}

Date-Based Scripts

Add today's date

$date = Get-Date -Format "yyyy-MM-dd"
Get-ChildItem | Rename-Item -NewName { "$date-" + $_.Name }

Use file's modified date

Get-ChildItem *.jpg | ForEach-Object {
  $date = $_.LastWriteTime.ToString("yyyy-MM-dd")
  Rename-Item $_ ("$date-" + $_.Name)
}

Extension Scripts

Change extension

Get-ChildItem *.txt | Rename-Item -NewName { 
  $_.Name -replace '.txt','.md' 
}

Lowercase extensions

Get-ChildItem | Rename-Item -NewName { 
  $_.BaseName + $_.Extension.ToLower() 
}

Case Change Scripts

Lowercase everything

Get-ChildItem | Rename-Item -NewName { $_.Name.ToLower() }

Replace spaces with hyphens

Get-ChildItem | Rename-Item -NewName { 
  $_.Name -replace ' ','-' 
}

Advanced Scripts

Preview changes (WhatIf)

Get-ChildItem | Rename-Item -NewName { "new-" + $_.Name } -WhatIf

Recursive (include subfolders)

Get-ChildItem -Recurse *.jpg | Rename-Item -NewName { 
  "photo-" + $_.Name 
}

Filter specific files

Get-ChildItem | Where-Object { $_.Name -like "*vacation*" } | 
  Rename-Item -NewName { $_.Name -replace "vacation","hawaii" }

Safety Tips

  1. Always use -WhatIf first to preview
  2. Back up files before bulk operations
  3. Test on copies with sample files
  4. Use specific patterns to avoid renaming wrong files

When Scripts Aren't Enough

PowerShell can't understand file content. For intelligent naming:

File Renamer AI analyzes your files and creates meaningful names.

Try File Renamer AI - Smart renaming without scripts.

Ready to organize your files?

Start renaming with AI - no credit card required

Get Started Free