My previous answer tried to use the ren command and failed, because this
command only does a very primitive string matching.
Most importantly, it cannot replace a string with a longer one.
To prevent others from making the same mistake, here is an explanation
(not an answer).
If the command is written as:
ren SourceMask TargetMask
then any character in TargetMask causes the pointer into
SourceMask to advance by one position.
So, if we are renaming the file 1234.567 by the following command:
ren *2*.* *2X*.*
the result will be 12X4.567. It will not be the naively expected
12X34.567.
The reason is that TargetMask is handled here like this:
*2 - matches up to and including 2, adding to target : 12
X - matches itself AND advances one position so skipping 3, adding to target : X
*. - matches up to and including the point, adding to target : 4.
* - matches the extension part, adding to target : 567
Conclusion: The ren command should be avoided when replacing strings
of unequal lengths.
The way ren works is described in a very complete manner in the post
How does the Windows RENAME command interpret wildcards?.