正则表达式案例一则:结合目录输出命令批量改名
这是舍得在实际工作中碰到的一个案例,整个操作过程非常简单,用到三项技术,一是使用dir输出目录,二是用正则表达式进行处理,三是批处理命令。
在实际操作中,有时我们或者可以用批量改名的工具来完成文件批量重命名这一任务,但对于本例来说,由于相对比较复杂,还是用舍得的方法处理一下更方便一些。
通过本例可以让我们重温一下正则表达式的使用技巧。
先来看看我们要完成的任务。舍得的某个文件夹里有这样的一些文件,文件名格式极有规律,是“字母“+”-”+”数字”+“-”+“其它内容”组成的,如:fut-019-e1.txt,我们要将它改为”数字“+”-”+“字母”+“-”+“其它内容”。
下面开始讲解实际操作。
第一步:用dir命令输出目录
进入dos界面(这项操作不会的童鞋请自行股沟一下)并转到所要操作的文件夹下,然后输入命令:dir >
e.bat
dir是从dos时代就有的目录操作命令,它的历史比我们绝大多数童鞋的年龄还大,dir后面跟着的这个”>“非常关键,用它来告诉系统,请把当前
文件夹下的文件和文件夹名输出到”e.bat”这个文件。bat文件即批处理文件,它可以直接使用文本编辑软件进行编辑,并可以直接执行其中的dos命
令。
输出之后的结果如下面这个文件所示:
e.bat (10.36 KB, 下载次数: 0)
第二步:使用正则表达式进行处理
得到的文件包含一些无用的内容,需要先清理一下,仅保留每行一个文件名。
然后开始用正则表达式将每行的文件名替换为如下的格式:
- rename fut-019-e1.txt 019-fut-e1.txt
复制代码
rename(或ren)是重命名命令,后面跟着两个文件名,意思是将前一个文件名改为后一个文件名。
通过分析其中的规律,我们可以用”\w+”来表示连续字母,用”\d+”来表示连续数字,那么这个正则表达式就很好写了:
- 查找:(\w+-)(\d+-)(.*?$)
- 替换为:rename \1\2\3 \2\1\3
复制代码
前一个括号内代表”fut-“,后一个括号内代表”019-“,第三个括号则代表剩余的内容。
在替换栏内,加上dos
命令rename,注意别忘了后面的空格,\1\2\3的作用是将文件名原封不动地写回去,而\2\1\3则巧妙地将第一个括号和第二个括号换位,这个换位的技巧是正则表达式中最有用的技巧之一。
第三步:运行批处理文件
处理完之后,直接执行这个批处理命令,文件改名工作就顺利完成了!
最后处理完成的文件如下:
e.bat (7.39 KB, 下载次数: 0)
小结:
正则表达式的功能是非常强大的,用它可以大大提高我们日常工作的效率。虽然现在新版的转换精灵制作课程的功能非常强大,但大家若能掌握正则表达式,就能用它处理更多优质的学习素材,供转换精灵制作之需。有兴趣的童鞋不妨好好研究一下正则表达式的技巧。
如果将本例的rename命令换成copy,并对正则表达式稍作改造,就可以用来做一些像”从语音库里复制mp3“这样的任务。
假如你对这里讲的正则表达式知识还是很陌生,建议阅读一下舍得写的正则表达式实用教程,那篇文章讲述了正则表达式最基础的技术。