☆ 許雪松
(海安縣實驗小學(xué),江蘇南通 226600)
巧借數(shù)據(jù)庫批量修改照片名稱
☆ 許雪松
(海安縣實驗小學(xué),江蘇南通 226600)
我校今年有100多位教師參加高考監(jiān)考任務(wù),根據(jù)市招辦要求必須在網(wǎng)絡(luò)環(huán)境上傳監(jiān)考教師信息:一項為基本信息,使用dbf數(shù)據(jù)庫導(dǎo)入;一項為監(jiān)考教師的照片,照片須使用身份證號碼命名。我?,F(xiàn)有的照片都是使用教師姓名命名的,如果逐個修改需要很大的工作量。經(jīng)過筆者初步研究,使用下面兩種方案可以解決該問題。
從會計室復(fù)制了一份工資表,該工資表是Excel格式,在Excel中將序號、銀行賬號等列刪除,只保留姓名、身份證兩列,列標(biāo)題和多余的工作表也需刪除。此外還需注意將姓名中的空格去除,可使用“編輯”菜單中的“查找和替換”的命令實現(xiàn),最后另存為“教工信息.xls”,如圖1所示。
打開VFP9.0,單擊菜單 “文件”-“導(dǎo)入”,在“導(dǎo)入”對話框中“類型”選擇Excel5.0或 97(xls),“來源”瀏覽選擇剛剛制作的“教工信息.xls”,單擊確定。單擊菜單“文件”-“導(dǎo)出”命令,將數(shù)據(jù)表導(dǎo)出為dbf數(shù)據(jù)庫:教工信息.dbf。
單擊菜單“顯示”-“瀏覽 教工信息”,可以看見教工信息表了,接下來還需將字段名修改一下:單擊菜單“顯示”-“表設(shè)計器”,將字段名稱“a”、“b”分別修改為“姓名”、“身份證”。
圖1
在VFP9.0中單擊菜單“文件”-“新建”,選擇“程序”類型,在彈出的“程序1”框中輸入下列代碼,并單擊菜單“文件”-“保存”,將程序保存為“批量改名.prj”:
注解:go top命令是將指針定位到數(shù)據(jù)庫的第一個記錄,通過“scan”命令開始搜索?!皐j=″c:\教工照片\″+alltrim(姓名)+″.jpg″”是取得照片的文件名,其中“alltrim”是把照片文件名中的空格字符串刪除。獲得照片文件名后程序?qū)⑽募c數(shù)據(jù)庫中的信息進行對比,如果找到一致的信息就執(zhí)行“copy file”命令,使用身份證命名并復(fù)制到指定的文件夾中。alltrim(姓名)、alltrim(身份證)中的“姓名”“身份證”與數(shù)據(jù)表中字段名對應(yīng)。“name1”的作用是記錄數(shù)據(jù)庫中找不到相應(yīng)照片的人員名單,最后給出提示名單。
在執(zhí)行程序前,在c盤建立“教工照片”、“照片”文件夾,將所有教工的照片復(fù)制到“教工照片”文件夾內(nèi)。然后在VFP9.0中打開數(shù)據(jù)庫“教工信息.dbf”,單擊菜單“程序”-“運行”,選擇“批量改名.prj”。程序執(zhí)行后打開“c:\照片”,照片名稱已經(jīng)變成身份證號了。
在運行程序后,筆者發(fā)現(xiàn)還有少部分的照片沒有被轉(zhuǎn)換,經(jīng)仔細檢查后發(fā)現(xiàn)這部分教師照片文件名中的姓名與數(shù)據(jù)表的姓名不一致,如照片“王曉明.jpg”與數(shù)據(jù)庫中“王小明”不一致,可做個別處理。此段程序也可做進一步的修改,比如數(shù)據(jù)庫中找不到的,將其照片復(fù)制到另外一個文件夾中。
Replace Pioneer是一款比較專業(yè)的文本批量查找替換軟件。它能對各種形式的文本進行替換,最大的特點是可以自定義各種替換的規(guī)則,能夠在70多種編碼方式之間的批量轉(zhuǎn)換。此外,它也能對文件名進行批量修改,并支持文件名任意切割和重組,使用自定義規(guī)則甚至是函數(shù)進行修改。
和使用VFP9.0一樣,首先要制作一個數(shù)據(jù)庫,Replace Pioneer支持純文本格式的數(shù)據(jù)信息。在Excel中打開用工資表處理后的“教工信息.xls”,將其另存為文本文件“name.txt”。類型選擇為“文本文件(制表符分隔)”,保存到存放教工照片的文件夾內(nèi)(如圖2)。
圖2
運行Replace Pioneer,單擊菜單“tools”-“BatchRunner”,在彈出對話框中單擊“Pick Files”,將所有教工照片導(dǎo)入,這時我們看到圖片文件的列表了,注意不要將name.txt導(dǎo)入。
在“BatchRunner”對話框上勾選“Setoutfilename”,將默認的“$邀FILENAME妖”修改為
“$邀BASE妖<file_content('name.txt',″(芽:\n|^)$match\t([^\n]觹)″,'', 10000)>.$邀EXT妖”,此處是把輸出的文件名使用“name.txt”中對應(yīng)身份證號碼來修改(如圖3)。查看“output file”列呈現(xiàn)的新名字是不是符合要求,如果有空白,查看一下是不是圖片文件名和數(shù)據(jù)庫不符,最后點擊“File Rename”按鈕即可批量完成改名。
兩種方法相比,Replace Pioneer易于操作,VFP9.0需要有一定編程經(jīng)驗,但可以根據(jù)需要運用靈活修改命名的策略。修改文件名之前,都要做好數(shù)據(jù)的備份工作,防止名稱混亂出錯。上述方法也可根據(jù)數(shù)據(jù)庫將身份證命名的文件批量修改為姓名,也適合于其它文件的批量改名。
圖3
陳 鉞]