14

Original Files

File 15 - Example.txt
File 2 - Example.txt
File 22 - Example.txt
File 3 - Example.txt
File 4 - Example.txt
File 5 - Example.txt

Desired Output

File 15 - Example.txt
File 02 - Example.txt
File 22 - Example.txt
File 03 - Example.txt
File 04 - Example.txt
File 05 - Example.txt

Single file can be renamed easily with ren.

ren "File 2 - Example.txt" "File 02 - Example.txt"

Would it be possible to bulk rename it with Windows ren or rename tool?

4
  • 1
    Nice Free utility to make this type of task easy....bulkrenameutility.co.uk/Main_Intro.php
    – Moab
    Jan 3, 2019 at 14:11
  • I agree. I can name plenty of GUI based solutions for this, and wonder why the insistence on CLI Jan 4, 2019 at 10:33
  • @Mawg, can u do scripting with those GUI tools?
    – Sabrina
    Jan 4, 2019 at 10:45
  • I could - using AutoIt - but would probably recommend against it :-) I just wondered if there was a hard requirement for CLI, and now it seems like there is. Thanks for clarifying Jan 4, 2019 at 11:14

4 Answers 4

13

Would it be possible to bulk rename it with Windows ren or rename tool?

Yes, but it requires a batch file.

test.cmd:

@echo off
setlocal EnableDelayedExpansion
for /f "tokens=1,2,3,4" %%i in ('dir /b *Example.txt') do (
  rem pad 2nd token with leading zero
  set _num=0%%j
  set _num=!_num:~-2!
  ren "%%i %%j %%k %%l" "%%i !_num! %%k %%l"
  )
endlocal

example:

> dir *Example.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 2 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
03/01/2019  11:30                 0 File 3 - Example.txt
03/01/2019  11:30                 0 File 4 - Example.txt
03/01/2019  11:30                 0 File 5 - Example.txt
               6 File(s)              0 bytes
               0 Dir(s)  1,075,134,230,528 bytes free

> ..\test

> dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

03/01/2019  11:54    <DIR>          .
03/01/2019  11:54    <DIR>          ..
03/01/2019  11:30                 0 File 02 - Example.txt
03/01/2019  11:30                 0 File 03 - Example.txt
03/01/2019  11:30                 0 File 04 - Example.txt
03/01/2019  11:30                 0 File 05 - Example.txt
03/01/2019  11:30                 0 File 15 - Example.txt
03/01/2019  11:30                 0 File 22 - Example.txt
               6 File(s)              0 bytes
               2 Dir(s)  1,075,134,230,528 bytes free

Further Reading

17

This PowerShell one liner will expand all numbers in the file name to two places .PadLeft(2,'0'):
(and leave numbers with more places untouched)

Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}

to be on topic, wrapped in a cmd line/batch file:

Powershell -Nop -C "Get-ChildItem *[0-9]*.txt|Rename-Item -NewName {([regex]::Replace($_.BaseName,'\d+',{$args[0].Value.PadLeft(2,'0')}))+$_.Extension}"

To be on the safe side before executing the commands, append either

  • -Confirm which asks before doing a rename
  • -WhatIfwhich lists all renames it would execute without the parameter

just in front of the last "

3

Edit: I've just noticed this question is specifically about renaming from the command line, so it does not answer the question directly... I'll keep it for now, hoping it will be useful for others.


The Total Commander file manager has an excellent bulk rename tool. It includes many features, including rename preview, different rename masks, regular expressions, renaming files in entire folder hierarcy, and much more. At the same time, it is quite easy to use.

Here's a screenshot for demonstrating its usage:

Total Commander Multi Rename Example

Step by step:

  1. Download and run Total Commander.
  2. Nativate to the folder with the files to rename.
  3. Mark the files to rename:
    • Option 1 - Ctrl + A for marking all files in the folder.
    • Option 2 - Mark files one by one, using the Space key or mouse right click.
    • Option 3 - Open "Find Files" (Alt + F7), type *.txt in the "Search for" box, click "Start Search", press "Feed to listbox", then mark the files with Ctrl + A. Use this technique if you want to rename files also in inner folders.
  4. Press Ctrl + M to open the Multi-Rename tool.
  5. Set the desired values in "Search for" and "Replace with" boxes. If using a regular expression, check the RegEx box.
  6. Hit "Start!".
-2

ren *.bat *.txt will work to rename extensions on all matching files retaining the other portion of the name. Could you not abuse this to run a sequence of ren commands?

  • ren "File *" "File 0*"
  • ren "File 00*" "File 0*"
  • (deal with dangling remainders like File 022 - Example.txt
2
  • 1
    This is NOT helpful, did you check what your command will do? 2->0, 22->02, 15->05.
    – LotPings
    Jan 3, 2019 at 17:22
  • No, I don't have a Windows OS so didn't try it. But I have remembered for years that REN can do this. I meant to give a suggestion anyway. Jan 25, 2019 at 22:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .