最近拍了一些照片,开始有意识地上传到PPBC中国图像库保存。PPBC有自动识别的功能,即文件名中包含植物拉丁文名或中文名的情况下,系统可以自动鉴定为相应的物种。这就经常需要对图片重命名,我一般随手写个.bat文件,用dos的rename命令搞一下,非常便捷高效。但人老了总是很糊涂,一是经常记不住相应的命令,像今天建了个txt文件写好了命令,却忘了可执行文件的后缀是啥,改了啥.exe .cmd,真丢人;二是正则匹配经常翻车,下面重点记录下正则表达式的匹配情况。
D:\photo\2020\0326观光木\手机 目录下有一批文件,格式是这样的:
IMG_20200326_153346.jpg
IMG_20200326_153346.jpg 这是华为手机的自动命名方式,IMG开头加上日期,再加上一串6位的数字,其中前两位还是保持不变的。
我的本意是想在文件名后面加上“_观光木”,于是写了以下命令:
rename IMG_20200326_15*.jpg IMG_20200326_15*_观光木.jpg
结果文件被命名成这样了:
IMG_20200326_153346.jpg_观光木.jpg
把所有的都匹配上了,超吓人的有木有?
改成这样只好去好好研究一下正则表达式,然后想办法改回来:
rename IMG_20200326_15[0-9]{4}.jpg_观光木.jpg IMG_20200326_15[0-9]{4}_观光木.jpg
我用在线检测工具测试过,这样是可以匹配到的,但却无法执行后续的重命名操作。
为什么?难道是命令太复杂了?改了一种写法:
rename IMG_20200326_15????.jpg_观光木.jpg IMG_20200326_15????_观光木.jpg
它就好了。这是什么原理我还搞不明白,姑且先记录之。
来源:https://www.cnblogs.com/wildorchid/p/12582587.html