Home/Blog/Tutorials/How to Remove Text from Filenames in Bulk (Without Renaming One by One)
TutorialsBeginner10 min read

How to Remove Text from Filenames in Bulk (Without Renaming One by One)

Renomee Team

Published on September 30, 2026

How to Remove Text from Filenames in Bulk (Without Renaming One by One)

You've got a folder full of files that all share the same unwanted text in their names:

  • 200 scanned PDFs with Scanned_by_Epson_ at the start
  • Video files downloaded with [1080P] or [BluRay] tags baked in
  • Design files cluttered with _final, _v2, _copy suffixes across hundreds of files
  • Reports exported with a date stamp like _20260930 that you want stripped out

Pressing F2 and editing each one is not an option. This guide covers three methods — PowerShell, PowerRename, and Renomee AI — so you can pick whatever fits your situation.

Different problem? If you need to remove types of characters (brackets, illegal characters, emoji, underscores) rather than a specific word or phrase, see: Batch Remove Special Characters from Filenames


Which Method Should You Use?

Your situationBest method
Comfortable copying a one-liner into PowerShellPowerShell (30 seconds)
Want a visual interface with a live previewPowerRename (free, from Microsoft)
Complex rules, large batch, or no command-line experienceRenomee (describe in plain English)

Method 1: PowerShell — One Line, Done

The fastest option if you're comfortable opening a terminal.

Basic: Remove a fixed word or phrase

cd "C:\Your\Folder"
dir | rename-item -NewName {$_.name -replace "text to remove",""}

Real examples:

# Remove "Scanned_by_Epson_" prefix
dir | rename-item -NewName {$_.name -replace "Scanned_by_Epson_",""}

# Remove "_final" suffix
dir | rename-item -NewName {$_.name -replace "_final",""}

# Remove "[BluRay]" tag
dir | rename-item -NewName {$_.name -replace "\[BluRay\]",""}

⚠️ Always preview first. Add -WhatIf to see changes without applying them:

dir | rename-item -NewName {$_.name -replace "_final",""} -WhatIf

Case-sensitive removal

By default, -replace ignores case. To match exact case only, use -creplace:

# Removes "Final" but leaves "final" alone
dir | rename-item -NewName {$_.name -creplace "Final",""}

Remove multiple phrases in one pass

dir | rename-item -NewName {
    $n = $_.name
    $n = $n -replace "_final",""
    $n = $n -replace "_copy",""
    $n = $n -replace "_v\d+",""   # removes _v1, _v2, _v23, etc.
    $n
}

Remove everything after a specific character

For example, filenames like Report_2026_draft.docx — keep only Report:

Get-ChildItem -Path "C:\Your\Folder" -File | ForEach-Object {
    $base = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
    $ext  = $_.Extension
    $new  = $base -replace '_.*$', ''
    if ($new -and $new -ne $base) {
        Rename-Item -Path $_.FullName -NewName ($new + $ext)
        Write-Host "✅ $($_.Name) → $($new + $ext)"
    }
}

_.*$ is a regex pattern meaning "underscore followed by everything to the end." Swap _ for any character you want to cut at.


Method 2: PowerRename — Visual Preview, No Terminal

PowerRename is free and built into Microsoft PowerToys. Install PowerToys from the Microsoft Store, then right-click your files → PowerRename.

Remove a fixed word (no regex needed)

  1. Select your files → right-click → PowerRename
  2. Search: type the text you want to remove (e.g., Scanned_by_Epson_)
  3. Replace with: leave empty
  4. Use regular expressions: leave unchecked
  5. Review the preview, then click Rename
FieldValue
SearchScanned_by_Epson_
Replace with(leave empty)
Use regular expressions❌ not needed

Remove a versioned suffix like _v1, _v2 (regex needed)

FieldValue
Search_v\d+
Replace with(leave empty)
☑ Use regular expressionschecked

\d+ matches one or more digits.

Remove everything after a specific character

FieldValue
Search_.*
Replace with(leave empty)
☑ Use regular expressionschecked
☑ Match filename only (not extension)checked

PowerRename limitations:

  • Each rule runs separately — you'll need multiple passes for multiple phrases
  • No undo history; relies on Ctrl+Z
  • Regex has a learning curve for non-technical users

Method 3: Renomee — Plain English, No Syntax

Renomee reads your instruction as natural language and handles the rest. No regex, no scripting.

Example:

Files: Scanned_by_Epson_Invoice_Jan.pdf, Scanned_by_Epson_Contract_Feb.pdf

Type:

Remove "Scanned_by_Epson_" from the start of every filename

Result: Invoice_Jan.pdf, Contract_Feb.pdf


Complex rules work too:

Remove _final, _copy, and any _v followed by a number from the end of filenames.
Keep the main name and trim any extra spaces.

Why Renomee for this:

  • ✅ Live before/after preview for every file before anything changes
  • ✅ One-click undo — full rename history
  • ✅ Handles edge cases automatically (empty names, duplicates)
  • ✅ One instruction can cover multiple removal rules at once

Download Renomee →


Common Scenarios

Scenario 1: Strip download-site tags from video filenames

Files: [1080P][BluRay] Inception.mkv, [HDR][IMAX] Dune.mkv

PowerShell:

# Remove square-bracket tags and their contents
dir | rename-item -NewName {$_.name -replace "\[.*?\]",""}

Renomee:

Remove everything inside square brackets (including the brackets) from every filename

Result: Inception.mkv → Inception.mkv, Dune.mkv → Dune.mkv


Scenario 2: Remove a date stamp from filenames

Files: Contract_20260101_ClientA.pdf, Contract_20261231_ClientB.pdf

PowerShell:

Get-ChildItem -File | ForEach-Object {
    $base = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
    $ext  = $_.Extension
    $new  = $base -replace '_\d{8}', ''
    if ($new -ne $base) {
        Rename-Item -Path $_.FullName -NewName ($new + $ext)
    }
}

Renomee:

Remove the 8-digit date (like 20260101) and the underscore before it from every filename

Result: Contract_ClientA.pdf, Contract_ClientB.pdf


Scenario 3: Clean up multiple version suffixes at once

Files have a mix of _final, _Final, _v2, _copy — you want all of them gone.

PowerShell:

Get-ChildItem -File | ForEach-Object {
    $base = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
    $ext  = $_.Extension
    $new  = $base
    $new  = $new -replace "_final|_copy",""
    $new  = $new -replace "_v\d+",""
    $new  = $new.Trim()
    if ($new -and $new -ne $base) {
        Rename-Item -Path $_.FullName -NewName ($new + $ext)
    }
}

Renomee:

Remove _final, _copy, and any _v followed by a number from filenames.
Trim any leftover spaces.

Result: Proposal.docx, Design.psd, Agreement.pdf


Scenario 4: Remove text only from the start or end of filenames

Files: DRAFT_ProjectPlan.docx, DRAFT_Q3Report.pptx

PowerShell:

# Remove only from the start
dir | rename-item -NewName {$_.name -replace "^DRAFT_",""}

# Remove only from the end (before extension)
Get-ChildItem -File | ForEach-Object {
    $base = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
    $ext  = $_.Extension
    $new  = $base -replace "_DRAFT$",""
    if ($new -ne $base) { Rename-Item $_.FullName ($new + $ext) }
}

^ anchors to the start; $ anchors to the end of the base name.

Renomee:

Remove "DRAFT_" from the beginning of every filename, leave the rest unchanged

Result: ProjectPlan.docx, Q3Report.pptx


Before You Run Any Batch Rename

  1. Back up first — copy the folder to a safe location before starting
  2. Preview every time — PowerShell: add -WhatIf; PowerRename: check the preview column; Renomee: review the before/after list
  3. Check for duplicate results — removing shared text can produce identical names; catch this in the preview stage

FAQ

Q: What if the filename becomes empty after removing text?

  • PowerShell: Add a guard clause so empty results are skipped:
if ($new -and $new -ne $base) { Rename-Item ... }
  • Renomee: Automatically detects empty results and marks them as skipped in the preview — no empty filenames are ever written to disk.

Q: Will files that don't contain the text be affected?

No.

  • PowerShell: -replace returns the original string unchanged when there is no match — no error, no modification.
  • Renomee: Files with no match appear as "no change" in the preview list and are left untouched.

Q: The text I want to remove contains parentheses — PowerShell crashes. What do I do?

PowerShell's -replace treats ( and ) as regex syntax. Escape them with [regex]::Escape():

$pattern = [regex]::Escape("(copy)")
dir | rename-item -NewName {$_.name -replace $pattern,""}

With Renomee you don't need to worry about this. Just describe what you want in plain English — Remove "(copy)" from every filename — and the AI handles the escaping automatically.

Q: Can I remove text from filenames inside subfolders too?

  • PowerShell: Add -Recurse to Get-ChildItem:
Get-ChildItem -Recurse -File | rename-item -NewName {$_.name -replace "text to remove",""}
  • Renomee: Select all files including subfolders before running the rule — the same instruction applies to every selected file.

Summary

MethodBest forLearning curve
PowerShellQuick one-liners, scripting, automationLow (copy-paste works)
PowerRenameVisual preview, simple rulesMedium (regex for advanced)
RenomeeComplex rules, large batches, no codingNone

Tags

#batch rename#remove text from filename#bulk rename#Windows#PowerRename#PowerShell

About the Author

The Renomee team is dedicated to providing users with the best file management solutions, sharing practical tips and in-depth technical articles.