How to rename multiple files in multiple folders with one command

11

3

We want to rename our *.html files to *.php but (sadly enough) have not enough knowledge to do it with a cmd prompt command and/or batch file.

The problem is that each file is in separate folder – and I am talking about 750+ different folder names. Using wildcards for the files I know is the * but using also a wildcard for folders is unknown to me. We probably need to use the FOR command (in Command Prompt), but there I am stuck.

Folder structure we use is:

parent-folder/child-folder/grandchild-folder/file.html

for example:

  • games/A/game_name/file.html
  • games/B/game_name/file.html
  • games/C/game_name/file.html and so on.

The parent folder is the same for all files; the child & grandchild folders are different for most files.

After renaming these files to *.php I assume the following in the .htaccess will make a permanent redirect.

RedirectMatch 301 (.*)\.html$ http://oursite.com$1.php

Charles

Posted 2012-03-21T11:00:55.260

Reputation: 263

Answers

14

get-childItem -recurse | Where {$_.extension -eq ".html"} | rename-item -newname { $_.name -replace ".html",".php" }

This will work in PowerShell.  If you have Windows 7 or Vista, you should have it installed by default.  If you are on XP you can download it here.

soandos

Posted 2012-03-21T11:00:55.260

Reputation: 22 744

Soandos, Chapeau !!!!!!!!!!!! Many thanx from this side, works like a charm. – Charles – 2012-03-21T11:31:56.157

@Charles, if this solved your problem, please click the check mark, so that everyone else that sees it will know it worked. Welcome to SuperUser. – soandos – 2012-03-21T11:33:07.570

3

In command line:

for /f "delims=*" %a in ('dir *.html /b /s') do ren "%a" *.php

Note: You can replace *.html for other wildcard, e.g. d:\www\*.html.

Note 2: If using the command within a batch file, replace %a with %%a (don't ask me why)

ZEDA-NL

Posted 2012-03-21T11:00:55.260

Reputation: 418

Why do you say "delims=*"?  "delims=" should be good enough (i.e., why do you specify a delimiter of *``**? – G-Man Says 'Reinstate Monica' – 2016-01-31T01:34:45.327

1

Flexible Renamer is an excellent little program that will handle several different types of renaming searches/replaces. It accepts regular expressions, and has common patterns predefined. Additionally, it allows you to include items in subfolders, or operate on folders themselves. It also gives you a preview of all changes that will be made. I have used it for years, and highly recommend it.

http://download.cnet.com/Flexible-Renamer/3000-2248_4-28799.html

Aaron

Posted 2012-03-21T11:00:55.260

Reputation: 151

1

Using forfiles, we can write a script, to rename files recursively in all subfolders.

forfiles /S /M *.html /C "cmd /c rename @file @fname.php"   

Source: Batch script for renaming files in bulk

Srini

Posted 2012-03-21T11:00:55.260

Reputation: 11

0

TotalCommander: Search - Send to Panel - Multi-Rename Tool

Lazy Badger

Posted 2012-03-21T11:00:55.260

Reputation: 3 557