PowerRename utility

PowerRename is a bulk renaming tool that enables you to:

  • Modify the file names of a large number of files, without giving all of the files the same name.
  • Perform a search and replace on a targeted section of file names.
  • Perform a regular expression rename on multiple files.
  • Check expected rename results in a preview window before finalizing a bulk rename.
  • Undo a rename operation after it is completed.

Demo

In this demo, all instances of the file name "foo" are replaced with "foobar". Since all of the files are uniquely named, this would have taken a long time to complete manually one-by-one. PowerRename enables a single bulk rename. Notice that the Explorer's "Undo Rename" (Ctrl+Z) command enables the ability to undo the last change.

PowerRename Demo.

PowerRename window

After selecting files in Windows File Explorer, right-clicking and selecting PowerRename (which will appear only if enabled in PowerToys), the PowerRename window will appear. The number of items you've selected will be displayed, along with search and replace values, a list of options, and a preview window displaying results of the search and replace values you've entered.

PowerRename Menu screenshot.

Search for

Enter text or a regular expression to find the files in your selection that contain the criteria matching your entry. You will see the matching items in the Preview window.

Replace with

Enter text to replace the Search for value entered previously. You can view the original file name and renamed file name in the Preview window.

Use regular expressions

If checked, the Search value will be interpreted as a regular expression (regex). The Replace value can also contain regex variables (see examples below). If not checked, the Search value will be interpreted as plain text to be replaced with the text in the Replace field.

For more information regarding the Use Boost library option in the settings menu for extended regex functionalities, see the regular expressions section.

Match all occurrences

If checked, all matches of text in the Search field will be replaced with the Replace text. Otherwise, only the first instance of the Search for text in the file name will be replaced (left to right).

For example, given the file name: powertoys-powerrename.txt:

  • Search for: power
  • Rename with: super

The value of the renamed file would result in:

  • Match all occurrences unchecked: supertoys-powerrename.txt
  • Match all occurrences checked: supertoys-superrename.txt

Case sensitive

If checked, the text specified in the Search field will only match text in the items if the text is the same case. Case matching will be insensitive (not recognizing a difference between upper and lowercase letters) by default.

Apply to: Filename only

Only the file name (not the file extension) is modified by the operation. For example: txt.txtNewName.txt.

Apply to: Extension only

Only the file extension is modified by the operation. For example: txt.txttxt.NewExtension.

Include files

Deselecting causes files to not be included in the operation.

Include folders

Deselecting causes folders to not be included in the operation.

Include subfolders

Deselecting causes files within folders to not be included in the operation. By default, all subfolder items are included.

Text formatting

Select between four options to either convert items to be all lowercase, all uppercase, title case (first character of name is capitalized), or capitalize each word.

Enumerate items

Appends a numeric suffix to file names that were modified in the operation. For example: foo.jpgfoo (1).jpg

Replace using file creation date and time

The creation date and time attributes of a file can be used in the Replace with text by entering a variable pattern according to the table below. Selecting the tool-tip in the Replace with field allows you to view and select from the supported patterns.

Variable pattern Explanation
$YYYY Year, represented by a full four or five digits, depending on the calendar used.
$YY Year, represented only by the last two digits. A leading zero is added for single-digit years.
$Y Year, represented only by the last digit.
$MMMM Name of the month.
$MMM Abbreviated name of the month.
$MM Month, as digits with leading zeros for single-digit months.
$M Month, as digits without leading zeros for single-digit months.
$DDDD Name of the day of the week.
$DDD Abbreviated name of the day of the week.
$DD Day of the month, as digits with leading zeros for single-digit days.
$D Day of the month, as digits without leading zeros for single-digit days.
$hh Hours, with leading zeros for single-digit hours.
$h Hours, without leading zeros for single-digit hours.
$mm Minutes, with leading zeros for single-digit minutes.
$m Minutes, without leading zeros for single-digit minutes.
$ss Seconds, with leading zeros for single-digit seconds.
$s Seconds, without leading zeros for single-digit seconds.
$fff Milliseconds, represented by full three digits.
$ff Milliseconds, represented only by the first two digits.
$f Milliseconds, represented only by the first digit.

For example, given the file names:

  • powertoys.png, created on 11/02/2020 (november second)
  • powertoys-menu.png, created on 11/03/2020 (november third)

Enter the criteria to rename the items:

  • Search for: powertoys
  • Rename with: $MMM-$DD-$YY-powertoys

The value of the renamed file would result in:

  • Nov-02-20-powertoys.png
  • Nov-03-20-powertoys-menu.png

Regular expressions

For most use cases, a simple search and replace is sufficient. There may be occasions, however, in which complicated renaming tasks require more control. Regular Expressions can help.

Regular Expressions define a search pattern for text. They can be used to search, edit and manipulate text. The pattern defined by the regular expression may match once, several times, or not at all for a given string. PowerRename uses the ECMAScript grammar, which is common amongst modern programming languages.

To enable regular expressions, check the Use Regular Expressions check box.

Note: You will likely want to check Match all occurrences while using regular expressions.

To use the Boost library instead of the standard library, check the Use Boost library option in the PowerToys settings. It enables extended features, like lookbehind, which are not supported by the standard library.

Examples of regular expressions

Simple matching examples

Search for Description
^ Match the beginning of the filename (zero size)
$ Match the end of the filename (zero size)
.* Match all the text in the name
^foo Match text that begins with "foo"
bar$ Match text that ends with "bar"
^foo.*bar$ Match text that begins with "foo" and ends with "bar"
.+?(?=bar) Match everything up to "bar"
foo[\s\S]*bar Match everything between and including "foo" and "bar"

Matching and variable examples. Capturing groups are defined in parentheses (). To refer to them, use $ followed by a number: $1 will refer to the first group, $2 to the second etc.

When using the variables, the "Match all occurrences" option must be enabled.

Search for Replace with Description
(.*).png foo_$1.png Prepends "foo_" to the existing file name for PNG files
(.*).png $1_foo.png Appends "_foo" to the existing file name for PNG files
(.*) $1.txt Appends ".txt" extension to existing file
(^\w+\.$)\|(^\w+$) $2.txt Appends ".txt" extension to existing file name only if it does not have an extension
(\d\d)-(\d\d)-(\d\d\d\d) or (\d{2})-(\d{2})-(\d{4}) $3-$2-$1 Move numbers in the filename: "29-03-2020" becomes "2020-03-29"
^(.{n})(.*) or (.*)(.{n})$ $1foo$2 Insert "foo" n characters from the beginning or the end, respectively
^.{n} or .{n}$ nothing Trim n characters from the beginning or the end, respectively

Additional resources for learning regular expressions

There are great examples/cheatsheets available online to help you:

Regex tutorial — A quick cheatsheet by examples

ECMAScript Regular Expressions Tutorial

File list filters

Filters can be used in PowerRename to narrow the results of the rename. Use the Preview window to check expected results. Click the column headers to switch between filters.

  • Original, the first column in the Preview window switches between:

    • Checked: The file is selected to be renamed
    • Unchecked: The file is not selected to be renamed (even though it fits the value entered in the search criteria)
  • Renamed, the second column in the Preview window can be toggled:

    • The default preview will show all selected files, with only files matching the Search for criteria displaying the updated rename value.
    • Selecting the Renamed header will toggle the preview to only display files that will be renamed. Other selected files from your original selection will not be visible.

PowerToys PowerRename Filter demo.

Settings

Additional options can be configured from the PowerRename tab in the Settings, as described below:

Setting Description
Show PowerRename in Defines whether PowerRename appears as one of the default options or only in the extended context menu
Enable auto-complete for the search and replace fields Automatically suggest terms to use in the search and replace fields based on prior uses of PowerRename
Maximum number of items The largest number search and replace suggestions to display
Show recently used strings When opening PowerRename, populate the search and replace fields with the last values used
Use Boost library Enable extended RegEx functionality. See Regular Expressions above for more details