文件批量重命名工具大家都比較熟悉,這種工具雖然沒什么技術(shù)含量,但是想設(shè)計(jì)好了非常不容易。功能簡(jiǎn)單的,幾乎沒什么用,很多需求都無法實(shí)現(xiàn)。功能復(fù)雜的,界面異常復(fù)雜,讓人看到就眼花繚亂。就算號(hào)稱最強(qiáng)大的文件批量改名,功能也非常局限。
今天,我給大家?guī)淼氖且豢钫嬲娜芪募恐孛?
它,UI簡(jiǎn)潔。
它,使用方便。
它,處理迅速。
它,安全可靠。
它,有強(qiáng)大的操作支持。
它,有靈活的變通方式。
它,有你能想到的所有功能。
之所以這個(gè)程序有這些特征,是因?yàn)樗捎昧嗣畹姆绞健3绦蛑С炙姆N主命令,分別是:篩選命令(select)、插入命令(insert)、替換命令(update)、刪除命令(delete),四個(gè)主命令共有29次重載;有四個(gè)輔助命令:反義(!)、全選(all)、向左(left)、向右(right);可以連續(xù)寫N個(gè)命令,用分號(hào)隔開即可。這樣一來,這個(gè)程序的功能總共有:N的29次方個(gè)。
寫這個(gè)程序的靈感是:能不能編寫一個(gè)可定制的批量重命名?所以選擇了命令形式,想怎么改,就怎么改。這樣有些人可能會(huì)說我的程序返古了,這樣很難用。其實(shí)一點(diǎn)也不難用,一共就四個(gè)命令,而且都是采用人們習(xí)慣的思維方式寫的函數(shù),再加上詳細(xì)的說明文檔,相信您只要用心看了,就一定會(huì)用!這個(gè)程序使用簡(jiǎn)單的另一個(gè)原因是它只支持單純的操作,沒有復(fù)雜邏輯和分支。在社會(huì)高度發(fā)達(dá)的今天,要想生活更美好,還是需要學(xué)習(xí)一下的。否則,你的效率就低,你活的就累!有一款文本編輯器叫vim,這個(gè)工具就是完全用命令編輯文本,雖然一開始用命令很難記憶,一旦熟練了,會(huì)用和不會(huì)用,編輯文檔的速度是天壤之別。
簡(jiǎn)單的輸入幾條甚至是一條命令,就可以達(dá)到您想要的效果,您不覺得是一種享受嗎?雖然是命令形式,但也是有限的命令,和編程沒有可比性,不要想的過于復(fù)雜!這個(gè)程序究竟有多么強(qiáng)大的功能,完全是取決于您的智慧!命令是永遠(yuǎn)不會(huì)被淘汰的,就像命令提示符一直伴隨Windows系統(tǒng)一樣。
另外,程序界面也做了十分貼心的設(shè)計(jì)。比如,我看到很多批量改名的程序有在文件名前邊或某個(gè)位置加序號(hào)的功能,這個(gè)功能的初衷非常好,可以給文件排序,給文件加一個(gè)標(biāo)號(hào)。但是幾乎所有的程序都沒考慮過一個(gè)問題:如何判斷哪個(gè)文件是第一個(gè)、第二個(gè)....呢???如何按照用戶的想法加序號(hào)呢??一般程序沒辦法解決這個(gè)問題,因?yàn)樗鼈冎皇菣C(jī)械的批量改名,哪個(gè)文件在列表中的位置靠前,哪個(gè)就是第一、第二....。這個(gè)問題在此程序中是如何解決的呢?可以看到界面上有兩個(gè)列表框,這個(gè)兩個(gè)列表框里的文件名都是可以拖動(dòng)的,上下拖動(dòng),就可以交換這兩個(gè)列表項(xiàng)。按照你自己的想法排好順序,然后再寫一句命令,就可以輕松完成加序號(hào)!在使用中你會(huì)發(fā)現(xiàn),輸入命令時(shí),列表中的文件名經(jīng)常會(huì)被用到,只要你在列表中的文件名上輕點(diǎn)鼠標(biāo)右鍵,會(huì)彈出復(fù)制按鈕,點(diǎn)擊一下即可復(fù)制,很貼心的設(shè)計(jì)。
關(guān)于界面,還要說的一點(diǎn)就是“預(yù)覽”按鈕,預(yù)覽只是看一下命令的執(zhí)行效果,并不會(huì)真正的更改文件名。輸入命令后,您可以先預(yù)覽,不滿意就修改命令,再預(yù)覽,直到結(jié)果令您滿意,再點(diǎn)擊“更改”按鈕即可!
這個(gè)程序采用了解釋器模式,所以可移植性非常好,功能和界面完全是分離的,如果您有更好的想法把它用在別的地方,直接調(diào)用dll類庫就可以了。
使用演示:
展示一下這個(gè)程序有多么強(qiáng)大!假如,有一個(gè)文件夾,有四個(gè)文件,想做如下轉(zhuǎn)換:
第一步: 用程序打開這個(gè)文件夾
第二步:
將“文件列表”中的“rainbow - 副本.log”拖放到第一個(gè)位置,“rainbow - 副本 (2).log”在第二個(gè)位置,“rainbow - 副本 (3).log”,在第三個(gè)位置,“rainbow.log”不用管,把他們按照目的序號(hào)排列好。
第三步: 輸入以下命令:
select("副本");
delete(" ");
update("-",all,"-.log",right);
insert("-",1,+,1,right);
第四步:
點(diǎn)擊預(yù)覽,查看效果。效果正確,點(diǎn)擊更改按鈕,更改完成。
附:
版權(quán)說明:
本程序命令輸入部分使用了開源代碼高亮控件ICSharpCode,版權(quán)歸原作者所有!
本程序?yàn)槊赓M(fèi)程序,禁止用于商業(yè)用途!
版本:1.0 Beat1
版權(quán)所有(C) 2012 廊坊師范信息技術(shù)提高班 保留所有權(quán)利
語法說明:
總規(guī)則:
違反規(guī)則將會(huì)引起異常,請(qǐng)仔細(xì)閱讀!
1.本程序所有符號(hào)均為英文符號(hào)。
2.本程序語句數(shù)量沒有限制,但每一個(gè)語句末尾都要加分號(hào);。
3.不要在語句中加空格,只可以在字符串參數(shù)中(雙引號(hào)里)加空格!
4.語句中,數(shù)值型數(shù)據(jù)直接寫,而所有字符串型數(shù)據(jù)要加雙引號(hào)"",包括select命令的值。
5.字符串下標(biāo)是從0開始的。比如"abc",a代表第0個(gè)字符,b代表第1個(gè)字符,c代表第2個(gè)字符。
6.所有的命令,如果涉及從某個(gè)位置或某個(gè)字符串開始截取,那么包含這個(gè)位置或這個(gè)字符串,不是從下一個(gè)開始。
7.篩選指令是用于選擇更改哪些文件的名稱,而操作指令是用于真正修改文件名。
篩選命令(select):
select("指定字符串"); 例如select("@"); 表示從文件列表中篩選出所有文件名包含@的文件。
select(起始位置,截取長(zhǎng)度,方向)="值"; 例如select(3,2,left)="abc";表示從第3個(gè)字符開始向左left或者向右right截取2個(gè)字符,如果這個(gè)值等于abc,那么保留,否則忽略該文件。
select(起始位置,用all關(guān)鍵字截取所有,方向)="值"; 例如:select(1,all,left)="abc"; 表示截取第1個(gè)字符左邊left或者右邊right的所有字符,如果這個(gè)字符串等于abc,則保留,反之,忽略。
select("指定字符串",截取長(zhǎng)度,方向)="值"; 例如:select("a",2,left)="abc"; 表示從字符串a(chǎn)左邊left或者右邊right截取2個(gè)字符,如果這個(gè)值等于abc,則保留,反之,忽略。
select("指定字符串",用all關(guān)鍵字截取所有,方向)="值"; 例如:select("a",all,left)="abc"; 表示截取字符串a(chǎn)左邊left或者右邊right的所有字符,如果這個(gè)字符串等于abc,則保留,反之,忽略。
select命令都支持取反,在命令前加英文感嘆號(hào),即可表示反義。例如:!select("a");表示選取所有不包含字符串a(chǎn)的文件名。
操作命令:
插入命令(insert):
insert(指定位置,"要插入的字符串",方向); 例如:insert(1,"a",left);表示在第1個(gè)位置的左邊left或右邊right插入字符串a(chǎn)。
insert("指定字符串","要插入的字符串",方向); 例如:insert("a","b",left);表示在字符串a(chǎn)的左邊left或右邊right插入字符串b
insert(指定位置,初始值,操作符,步長(zhǎng),方向); 例如:insert(1,0,+,1,left);在第1個(gè)位置的左邊left或者右邊right插入以0為初始值,1為步長(zhǎng),進(jìn)行加+或乘*運(yùn)算的結(jié)果
insert("指定字符串",初始值,操作符,步長(zhǎng),方向); 例如:insert("a",1,*,2,left); 在字符串a(chǎn)的左邊left或者右邊right插入以1為初始值,2為步長(zhǎng),進(jìn)行加*或乘+運(yùn)算的結(jié)果
替換命令(update):
update("原字符串","新字符串"); 例如:update("a","b");表示從名稱中查找字符串a(chǎn),然后替換成字符串b
update(起始位置,截取長(zhǎng)度,"新字符串",方向); 例如update(1,2,"a",left); 表示從第1個(gè)字符開始,向左left或向右right截取2個(gè)字符,把這個(gè)字符替換成字符串a(chǎn)。
update(起始位置,用all關(guān)鍵字表示所有,"新字符串",方向); 例如:update(1,all,"a",left); 表示從第1個(gè)字符開始,向左left或向右right截取所有的字符串,把這個(gè)字符串替換成字符串a(chǎn)。
update("指定字符串",截取長(zhǎng)度,"新字符串",方向); 例如:update("a",2,"b",left); 表示:在字符串a(chǎn)的左邊left或者右邊right截取2個(gè)字符,把這個(gè)字符替換成b
update("指定字符串",用all關(guān)鍵字表示所有,"新字符串",方向); 例如:update("a",all,"b",left); 表示:取出字符串a(chǎn)左邊left或者右邊right的所有字符,替換成b
刪除命令(delete):
delete("指定字符串"); 例如:delete("a"); 表示從文件名稱中刪除指定的字符串a(chǎn)。
delete(起始位置,截取長(zhǎng)度,方向); 例如:delete(1,2,left); 表示從第1個(gè)字符開始,向左left或者向右right截取2個(gè)字符,把截取的字符刪除。
delete(起始位置,用all關(guān)鍵字表示所有,方向); 例如:delete(1,all,left); 表示截取第1個(gè)字符左邊left或者右邊right的所有字符,把截取的字符刪除。
delete("指定字符串",截取長(zhǎng)度,方向); 例如:delete("a",2,left); 表示從字符串a(chǎn)的左邊left或者右邊right截取2個(gè)字符,把截取的字符刪除。
delete("指定字符串",用all關(guān)鍵字表示所有,方向); 例如:delete("a",all,left); 表示截取字符串a(chǎn)左邊left或者右邊right的所有字符,把截取的字符刪除。
所有delete命令都支持取反,在命令前加英文感嘆號(hào)即可。例如:!delete("a"); 表示只保留文件名中的字符串a(chǎn),其余全部刪除。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
