最近拍了一些照片,開始有意識地上傳到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
它就好了。這是什么原理我還搞不明白,姑且先記錄之。