Navigation
Popular content
Today's:Active forum topics
|
Rename files with regular expressionsGeneralThis tool renames files, using a regular expression. This allows you to make complex renaming operations quickly and simply. The latest version is of 2008-07-27. It has the same function as the original version, but shows some diagnostics. If you don't know what regular expressions are, learn about them first. You definitely need this knowledge to use this command. For particular codes double-click on the included documentation file: regexprename.htm InstallationDownload regexprename.zip, unzip it and put the .vbs file somewhere inside your search path, for example in the Windows folder. The .htm file is a short regular expression cheat sheet. Alternatively you can put the .vbs program file into the same folder where you want to rename files. The program will not rename itself, even if the pattern matches. UseThis command requires that the Windows Scripting Host, either WScript or CScript, is installed. Windows XP and later have it installed by default. The command requires exactly two parameters. If a parameter contains one or more spaces, it has to be enclosed in quotes (" "). Parameters:
For information on the regular expression pattern codes double-click on the documentation file: regexprename.htm Details and hintsPutting a group into the replacement stringGroups from the pattern, i.e. parenthesized expressions, are copied into the replacement string with $1, $2, etc., rather than \1, \2, etc., as in Perl, Linux, Unix. Shorter commandIf you need the program often and want to make the commands shorter, you can rename it, for example from regexprename.vbs to: rr.vbs Case sensitivityThe parameters are case-sensitive. The program could be changed. The RegExp object has a property, "IgnoreCase", to make it case-insensitive. You can add the following line to the program just after the regEx object is created, to make it case-insensitive:
Global replacement of multiple pattern occurrencesAs usual with regular expressions, if the pattern occurs more than once, only the first occurrence is replaced. The program could be changed. The RegExp object has a property, "Global", to replace every occurrence. You can add the following line to the program just after the regEx object is created, to make it replace every occurrence:
This is normally not necessary, as you can put more than one occurrence of a string in the pattern. Please extend the program and distribute it hereOf course you could also add more parameters to control these properties from the command line. If you do this, please upload the extended program here for the benefit of others. Create a new forum topic to be able to attach a file. Simple examplesPicture files from a digital cameraPicture files coming from a digital camera should be renamed. The original file names look like this: P0101021.JPG Enter the following command as one line. You can copy it from here and paste it into the command line window, using the right mouse button:
The resulting file is: Xmas 2008 0101021.JPG Note the intended space after 2008. Also note that the renaming works only on the first P, not on the second. Change to lower case and remove spacesTaking the preceding result file as an example, we want to have a lower case X, spaces replaced with underscores, and JPG changed to the lower case jpg. Enter the following command as one line. You can copy it from here and paste it into the command line window, using the right mouse button:
The resulting file is: xmas_2008_0101021.jpg The parenthesized group included the long number and the period. It is put into the result with the code $1. Note that the literal period in the pattern, the first parameter, has to be escaped with a preceding backslash: This is not necessary in the replacement string, the second parameter. An alternative, more flexible command that yields exactly the same result here would be:
You could drop the JPG$ from the pattern string if you were sure that all files ended in: .JPG Complex example and tutorialIntentionWe want to rename 100 files such that they are named: x000.txt, x001.txt, x002.txt, ..., x100.txt Test preparation
Open a command line window and navigate to the test folder. The renaming procedure will be done in that window. Enter the dir command to make absolutely sure that the test folder is the current folder and you're not renaming any important files. Remove the space and the parentheses and add leading zerosNote that each of the two parameters has to be enclosed in quotes (" "), if it contains one or more spaces. Since we don't have any spaces in this case, we don't need quotes. Enter the following command as one line. You can copy it from here and paste it into the command line window, using the right mouse button:
The files should now be named like this: x000.txt, x001.txt, x002.txt, ..., x00127.txt Note that we didn't need the end-of-string designator $ at the end of the pattern, because the .* pattern is "greedy" and covers the end anyway. However, the pattern would work just as well like this:
i.e. with the end-of-string marker $. Remove the superfluous leading zeros, leaving exactly three digitsEnter the following command as one line. You can copy it from here and paste it into the command line window, using the right mouse button:
The files should now be named like this: x000.txt, x001.txt, x002.txt, ..., x127.txt This is what we wanted to achieve. Note that we needed neither the beginning of string marker ^, because the x is unambiguous, nor the end of string marker $, because the .* expression is "greedy". However, the pattern would work just as well with begin and end of string markers:
|
User login
Donations If this web site has helped you, please help us too! Recent blog posts
Windows news ticker
Who's new
Who's online
There are currently 0 users and 2 guests online.
hits since 2010-03-12 · Statistics |
2 days 7 hours ago
2 days 19 hours ago
3 days 2 hours ago
4 days 15 hours ago
5 days 2 hours ago
5 days 5 hours ago
5 days 5 hours ago
1 week 3 days ago
1 week 3 days ago
1 week 5 days ago