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