
[已解決]如何提取原文件名中連續的字母數字來重命名文件最后由 pcl_test 于 -4-13 10:09如題:1、項目有很多帶有編號的文件,需要Bat對每個文件按一定規則重命名2、原始格式如:(格式包含:字母、數字、符號、中文,除了所說的編號(藍色)是固定之外,其他很隨機)(符號只有三個 -_ (即常用命名符號:減號、下劃線、空格))Mark31_DMK-007-開發文檔.docInstall_ISKA396-安裝補丁.TempOdfm09632M芯片.Doc方案Sk5_ISKA9531.Js統計表0312KSIM325FromLiHua月報.xls4、處理規則:按 【連續三個以上字母+零或一個符號+連續三個以上數字】(難點在于連續),作為識別【編號】,存儲編號到編號記錄的.txt,再以 【編號+中文】為新文件名命名文件5、個人想法:我也是新手,單單不考慮動手一番就伸手,可能會耽誤熱心的前輩的時間,所以把我的想法和困難寫出來(以下版主的做法遠遠超過了我的思路,So以下個人理解請忽略):1)取出一個文件名,先逐字分割,For命令可以2)判斷連續三個以上數字(因為英文很多,數字則較容易判斷三個連續),判斷方法是:遇到第一個數字則開始計數,存到變量A,第二個還是數字則計數加一,更新變量A,如此類推。直到下一個不是數字則計數清零,即不滿足數字。通過判斷計數大于等于3則變量滿足規則,但程序還要繼續判斷數字要滿足到最長的連續數字):這里面的難點在于如何判斷同時又存儲直到不是數字為止3)數字前面一定是一個或零個符號,所以把變量A前一位找出來,其一定滿足是符號或字母(如果不是符號字母則前面的單單三個數字就不滿足規則了),滿足則更新A:難點在于怎么提取前一位4)再對前一位再讀取,其一定滿足是字母(如果不是字母則又不滿足了),再對前前一位讀取判斷是否是字母,如此知道不是字母為止,不斷更新變量A (向前取是因為保證一樣統計大于3個字母) :難點在于 如何向前取字符,這個論壇里面可沒有發現向前取字符的5)獲得變量A判斷A的前面字母大于三個,則變量A即是編號,再提取文件名中的中文,就可以按 編號+中文 為新文件名命名文件6、本批處理的處理規則適合于:存檔管理里面的【產品編號】自動識別,有些復雜的判斷規則。所以我想可能要花費前輩的一些時間,不過做出來了實用性還是很大的。7、掛出來大家練練手,謝謝了,最好純Bat碼哈,嘿嘿。節省大家時間就這么創建測試吧:
- @echo off
- Echo >%CD%Temp_Mark31_DMK-007-開發文檔.doc
- Echo >%CD%Temp_Install_ISKA396-安裝補丁.Temp
- Echo >%CD%Temp_Odfm09632M芯片.Doc
- Echo >%CD%Temp_方案Sk5_ISKA9531.Js
- Echo >%CD%Temp_統計表0312KSIM325FromLiHua月報.xls
nclick="copycode($('code0'));">復制代碼