zoukankan      html  css  js  c++  java
  • 真正的全能文件批量重命名工具(命令形式)

         文件批量重命名工具大家都比较熟悉,这种工具虽然没什么技术含量,但是想设计好了非常不容易。功能简单的,几乎没什么用,很多需求都无法实现。功能复杂的,界面异常复杂,让人看到就眼花缭乱。就算号称最强大的文件批量改名,功能也非常局限。

    今天,我给大家带来的是一款真正的全能文件批量重命名。

     

    它,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,其余全部删除。

  • 相关阅读:
    spring boot 中使用redis session
    关于 JVM 内存的 N 个问题(转)
    在JAVA中记录日志的十个小建议
    spring boot jpa 多数据源配置
    python高性能web框架——Japronto
    毕业 3 年,为何技术能力相差越来越大?——转自阿里技术人生
    如何成为技术大牛——阿里CodeLife
    布式之数据库和缓存双写一致性方案解析(转)
    海量数据存储--分库分表策略详解 (转)
    Linux内核模块简单示例
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/2801845.html
Copyright © 2011-2022 走看看