徐 云
(江蘇省測繪工程院,江蘇南京 210013)
在測繪工作和其他工作生活中,經(jīng)常需要對若干文件進(jìn)行批量更名,我們經(jīng)常從網(wǎng)上下載一些軟件,如“拖把更名器”等來完成這項更名工作。這些現(xiàn)成的軟件一般比較勝任有規(guī)律的更名,如替換、添加、刪除、加序等。
但是,如果原文件名和新文件名之間的關(guān)聯(lián)沒有簡單統(tǒng)一的規(guī)律,只有部分規(guī)律或者幾乎無規(guī)律,就不能夠用拖把更名器等進(jìn)行文件批量更名了。在這樣的情況下,我們就可以考慮依據(jù)對照表對文件批量更名。
對照表很簡單,一般有XLS,TXT兩種格式。當(dāng)然,在EXCEL中可以利用導(dǎo)入數(shù)據(jù)功能,將TXT格式轉(zhuǎn)為XLS格式,也可以利用另存為CSV格式,將XLS格式轉(zhuǎn)為TXT格式。
在無既有對照表的情況下,由于EXCEL軟件可以插入函數(shù)、填充、排序等,用它來創(chuàng)建對照表比較方便,如果有現(xiàn)成的對照表就更加方便了。TXT格式樣式為:
原圖號,新圖號
對照表的第1行只起標(biāo)識作用,對后續(xù)工作沒有影響。需要注意一個常識問題,由于文件名中不能夠含有“/:*?<>|”等字符,所以,在對照表中,除第1行外,也不可以含有這些字符。
批量更名程序可以用Visual Basic編寫,其窗體界面如圖1所示。
首先,利用窗體左上方CommandButton控件選擇對照表。點(diǎn)擊該按鈕后,程序?qū)⒄{(diào)用CommonDialog控件的ShowOpen方法,讓我們選擇對照表文件,并顯示在窗體左下方,該控件的Enabled屬性隨即變?yōu)镕alse。
程序隨即從第2行開始讀取對照表文件,直至Do While Not EOF(1)發(fā)現(xiàn)文件尾。對讀入的每行字符按照逗號識別原文件名和新文件名,并存入已定義的二維數(shù)組。
然后,利用彼此同步的DriveListBox控件和DirListBox控件選擇需更名的文件夾,經(jīng)過遞歸搜索,需更名的文件的文件列在ListBox里。這里,由于我們把ListBox的Visible的屬性設(shè)定為False,我們看不到ListBox控件。
在點(diǎn)擊“更名”后,通過循環(huán),程序讀取ListBox里每個文件的路徑和原名稱,將原名稱與二維數(shù)組中的原名稱對照,查找出對應(yīng)的新名稱,加上相應(yīng)的路徑(必要時加后綴名),這樣,有了新老文件名稱及其路徑,就可以用Name語句進(jìn)行更名了,如:
OldName=″E:新安江測區(qū)上期成果(老圖號)8645-01.dwg
NewName=″E:新安江測區(qū) 上期成果(老圖號)86754500.dwg
Name OldName As NewName
圖1 批量更名程序截圖
選項一:對照表是否含后綴名
如果新老文件后綴名相同,對照表就可以不加后綴名,作業(yè)時選擇默認(rèn)的“不含”選項,否則,就必須在對照表分別寫入新老文件的后綴名,并選擇相應(yīng)的選項。
選項二:新文件名相同的處理
一般情況下,新文件名應(yīng)該是不會相同的,但可能有些特殊情況,或者編寫對照表時發(fā)生個別錯誤,導(dǎo)致新文件名相同,則更名時可選擇默認(rèn)的加序號,如上例可能變?yōu)椋?/p>
OldName=″E:新安江測區(qū)上期成果(老圖號)8645-09.dwg
NewName=″E:新安江測區(qū) 上期成果(老圖號)86754500-2.dwg
Name OldName As NewName
也可選擇移至“重名”文件夾,即:
OldName=″E:新安江測區(qū)上期成果(老圖號)8645-09.dwg
NewName=″E:新安江測區(qū)上期成果(老圖號)重名86754500.dwg
Name OldName As NewName
至于退出程序選項,一般不建議使用。
選項三:對照表無原文件名
對照表無原文件名一般是由于編寫對照表時有遺漏或者是該文件不需要重命名,所以,建議選擇移至“未更名”文件夾,再進(jìn)行個別甄別。
FileCopy OldName,NewName
最后需要特別提醒的是,如前所述,本程序采用的是重命名方式而非復(fù)制方式,所以,如果不是特別有把握,在運(yùn)行程序之前,應(yīng)對文件進(jìn)行備份,已避免不必要的損失。當(dāng)然,我們可以將程序的Name方法改為FileCopy,但對大文件就不經(jīng)濟(jì)了,程序運(yùn)行也會慢一些。