火山PC批量改名工具。那么在这节课当中呢,将给大家来制作一个简单的批量改名工具,借此呢,我们来熟悉一些组件,熟悉一些命令和使用。首先呢,我们先来看一下功能说明……
火山PC批量改名工具。那么在这节课当中呢,将给大家来制作一个简单的批量改名工具,借此呢,我们来熟悉一些组件,熟悉一些命令和使用。首先呢,我们先来看一下功能说明,我们这个组件呢,就是通过选择一个目录,然后能列出目录当中所有的文件,可以一次性选择多个文件。
然后呢,将文件名中指定的字符替换,达到批量改名的效果,那么我们这一节课呢,就要实现这样的一个功能,好,那下面呢,我们直接打开火山,按照我们上面提到的这些需求,我们来进行软件的编写,现在呢,我们打开火山。
然后呢,这里我要新建一个项目。
同样的,我们选择MFC窗口程序,那这里呢,我就叫做第15课,好,那么我们现在呢,要修改窗口布局,现在呢,我们点击设计窗口,然后呢,我们进入到这个设计界面,我们来修改一下窗口的布局,首先我们先添加一个标签,这个标签呢,用来显示一段固定的内容,这里呢,我叫做啊选择目录。
然后呢,修改一下它的大小,再添加编辑框。
这个编辑框呢,我们可以不要太长啊,有这么长就可以,然后呢,同样的,那么这里呢,因为内呃标题呢,我们就不需要改变了啊,因为我们要让这个编辑框留空,我们这里呢,只修改它的名称,那这里呢,我们可以叫做目录。
接下来呢,我们还需要一个按钮,就达到一个我点击按钮之后,然后呢,就会打开一个让我们选择目录的这样的一个对话框,所以这个呢,我们先修改按钮的名字,这里我们可以叫做选择目录。
标题呢,我们也可以叫做选择目录,修改一下它的长度。
好,那么接下来我们就需要一个列表框来把所有的文件都列出来,那么列出来之后呢,我们还能够进行选择,所以这里呢,我们使用选择列表框这个组件,我们把它放在这里。
同样的修改一下名字,因为这里呢,列出的是文件,所以这里我们就叫选择列表框文件,其他项目呢,都不需要啊,都不需要动,我们就先使用默认的这些属性,然后呢,我们看到窗口下面可能有点多,我们可以设计成一个这样横向显示的窗口。
那么这里呢,我们再添加几个标签,因为我们这个需求当中提到将文件名中指定的字符替换,那么这样呢,我们需要做一个这样替换的效果,那么替换呢,我们肯定需要一个要被替换的字和替换成,就是要把这个字替换成什么字,所以呢,一共需要两个编辑框,那么提示呢,就需要两个标签,所以是两个标签和两个编辑框,这里呢,我们写一下名字。
那么这个标签我们就叫做。
啊,被修改的或者说被替换的字。
或者说内容都可以啊,我们叫内容比较好,然后呢,我们修改一下长度,这里呢,我们就可以添加一个编辑框,用作输入被替换的这样的一个内容。
好,我把它放在这里,然后呢,修改它的名字叫被替换的内容,接下来呢,我们还需要一个替换到的,那么这里呢,大家可以直接选中两个组件,选择复制,然后再次点击啊选择粘贴。
那它这里呢,叫粘贴进去或到前方啊,只要粘贴出来就可以,我们呢修改一下让它对齐。
这里呢,我们就要修改内容是。
替换成的内容。
同样的编辑框我们也修改成替换成的内容。
好那现在呢,我们这个界面可以说已经完成了,那下面呢,我们在添加一个按钮,作为最终的批量改名按钮。
批量改名。
这里呢,按钮我们就可以直接叫做改名,那么确认我们的界面没有问题之后,我们可以直接点击确定,然后呢,程序就会生成这么多的成员。那么接下来呢,我们再看,首先是选择目录,那么选择目录呢,我们再回到火山这里,选择目录呢,就需要当双击啊,不是双击啊,当点击选择目录之后,就会打开一个目录选择对话框,所以呢,我们要给它增加一个点击事件,那么这个点击事件呢,就是按钮被单击,我们选中按钮被单击,这里呢,就到了这个按钮被单击的事件下面,在这里我们需要判断来源,因为我们的窗口上有两个按钮,大家看这里有两个按钮,那么选择目录的这个按钮呢,是选择目录用的,那么后面这个批量改名呢,那么当我们点击改名之后啊。
它就会进行改名操作了,所以这是两个不同的按钮,因为他们共用的是同一个事件方法,那这里呢,我们就需要判断,如果来源对象等于等于哪一个呢?等于我们的选择目录,我们就让它执行我们目录选择操作,目录选择我们可以使用精益模块当中的啊目录选择这个命令,我们来看一下。
我们直接点击确定,添加一个新的模块,然后呢,我们可以叫目录,这里呢叫做目录浏览,我们看一下它的参数,首先是标题,请选择一个文件夹,没有问题,我们直接下一个显示文件,这里呢,为了好区分,我们可以将文件显示出来。
初始目录这个一会儿我们说一下,先看下一个地址栏是否呢,可以直接写地址,这里我们也用讲是否新样式,我们可以把样式改为新样式,最后的句柄呢,我们可以留空。
这样我们就可以打开目录浏览对话框了,在打开之前呢,我们需要在我们现在的这个电脑上新建一个空白的目录,用于我们一会修改名字,这里呢,我们就新建一个叫做修改名称目录。
然后进到这里,现在呢,我们将默认的目录设置到这里,也就是说每次呢,一打开目录选择器,它就会自动的定位到这里,我们看直接写在这里,那大家要注意中间有一个这个反斜线,我们都要把它替换成两个,并且呢,在最后也加入两条反斜线,我们现在呢,尝试运行一下。
好,我们现在等它编译完成。
MFC程序相对我们之前的控制台会慢一些,所以大家要耐心等待一点。
好,现在它弹出来,我们点击一下选择目录,这个时候呢,大家看到自动定位到了我们刚才在D盘盘根目录下新建的修改名称目录,我们可以直接点击确定,那么点击确定之后,我们应该让我们选择的目录显示在这个编辑框当中,同时呢,下面的列表当中加入我们选择的所有这个目录下所有的文件,这里我们需要将目录保存起来,我们新建一个变量。
目录。
它是文本型的,我们就是要接收目录浏览的返回值,因为它的返回值才是我们需要的这个目录,同时我让编辑框目录的内容等于刚才选择的这个目录,现在呢,它就会显示为我们选择的目录。
我们还是使用默认的这一个点击确定,大家看到这里呢,变成了我们选择的目录,接下来我们要将这个目录当中所有的文件枚举出来,我们使用文件枚举命令,同样是我们经营模块当中提供的命令。首先我们看一下参数,如果大家在打了括号之后没有参数,可以先敲一个逗号,然后呢,再把它删掉,就可以看到对应的参数列表了,首先。
欲寻找的目录,这个目录是哪里呢?也就是我们之前返回的这个目录,我可以直接用目录这个变量。
然后欲寻找的文件名。
这个大家需要注意,这个文件名呢,可以是指定的某一个文件,也可以是通配符,那么什么是通配符呢?大家可以通过百度啊看一下什么是通配符,这里呢,给大家介绍一个通用的通通配符就是星点,星星表示所有,不限长度,不限字母表示所有。
那么它在点前面表示它是文件名,那么这个点表示的是文件名和文件后缀之间的分割。
最后的这个就是文件的后缀名,它也是星,那就表示找这个目录项文件,所有文件名,所有文件后缀,就相当于是找所有的文件,那么找到之后他会怎么做呢?他会将所有的文件名或者说文件路径存储在这个文件数组当中。具体是文件名还是文件路径,取决于我们下一个参数传递帧,或者假如果传递帧表示带路径,带路径就会是完整路径,如果不带路径,那就只是文件名。现在我们需要新建一个文件数,呃,文本数组类这样的一个变量,我们新建一个,这里呢,我们可以叫做所有文件,然后呢,写为文件数组,呃,文本数组类。
大家要看好在火山当中使用数组的方法,下面我们需要带路径,因为我们需要将文件进行更名操作的,如果没有路径肯定是没有办法改成功的,所以这里我们要写为真,最后一个参数我们设置为假,或者说留默认不变粒子目录好,这样我们就可以将目录下所有的文件全部保存到我们的数组当中。那么光保存肯定是不够的,我们需要进行显示,显示在哪里呢?显示在我们的选择列表框当中,也就是这里。
我们调用选择列表框的加入项目这个选项,然后将所有文件加入,但是呢,这样写肯定是不对的,因为加入项目它一次只能加一个,而我们给他传递了一个数组,这显然是不对的,我们就需要一个循环来把数组当中所有的内容全部加入到。
这个选择啊,这个选择列表框当中,所以我们需要用一个循环,循环我们看一下它有几个参数,首先变量起始值循环的作用是将是循环从起始值到目标值循环这么多次,然后呢,我们可以每次指定它递增的数量,同时它拥有一个循环变量,这个循环变量呢,记录着当前是当前的这个值等于多少,我们来实际看一下。
起始值肯定我们从零开始。
为什么从零呢?因为零代表数组的第一个成员。
一代表第二个成员,以此类推。大家注意,这里的数组是从零开始的目标值,目标值就是我们有多少个数组成员,就让它循环多少次,所以这里呢,我用一个取成元数,然后是循环变量,循环变量呢,需要我们新建一个变量,它会记录当前循环的这个值是多少,一般呢,我们循环变量使用IJ或者是XY,这样比较容易区分的。
最后是递增值,我们每次让它递增一,然后回车。
我们将下面的代码复制到里面,这里呢,我们就需要改一下,我们就不能将整个数组传递,而是要将数组中每一个成员依次传递,这里呢,我们用取成员开。
好,大家来看这一句的效果,我现在运行起来。
我选,呃,点击选择目录,那么因为我们的目录下面啊,没有文件,我要去新建几个文件。
文本一,然后呢,我将这个文件原地复制粘贴,多做几份出来,大家看到我这样呢,做了九个文件,他们都有不同的名字。
然后我选择这个目录,大家注意要选目录,不能选到文件啊,因为选到文件就不对了,我们选择了之后。
循环一次将一个成员加入,那么有多少个数组就循环多少次。
最后呢,就是将所有的内容全部加入。
那么加入的时候,我们发现这个时候呢,可能我们有的时候呢,不太需要这个目录,我们只需要一个文件名就够了,因为这里呢,我们没必要看当前目录是什么,因为目录呢,就在我们编辑框当中。
所以这里呢,我们可以用另外一个命令将文件的目录去除掉文件。
取文件名。
好,我们现在再来试一下。
选择这个目录啊,因为是默认的,所以是自动选择的,现在呢是只有文件名,但是大家注意到点TXT这个后缀没有了。
那么如果大家看不到后缀的话呢,要点击查看,然后呢,这里有一个文件扩展名。
要选中这一个,那么如果你是WIN7的话,WIN7可以直接通过选项啊,就是文件夹选项。
啊文件夹选项在上面这个菜单啊,因为我这里这个演示没有菜单,所以大家看一下上面会有一个菜单,那么菜单里呢,就会有一个文件夹选项,然后呢,点击到查看这个页面,查看当中呢,就会有。
这个隐藏啊,有一个隐藏已知文件的扩展名,那么这个勾呢,就不要勾,那么不勾之后呢,大家就能看到文件的后缀了,也就是他的扩展名。
现在是TST,但是我们这个里头没有,我们就要看一下,因为取文件名,它是能够去除目录部分,只保留文件名,那么这个时候我就需要传递一个参数,让它把后缀也保留出来,因为它默认是不保存后缀的,这里呢我们写为针,让它保存后缀。
好,我们看一下效果。
大家现在看到TXT已经显示出来了,那现在呢,就是没有问题的,下面我们要编写另一个按钮了,因为这个按钮呢,我们就是要将文件列举出来,然后加入到。
列表框当中,那么它的作用已经完成,我们接下来点击这个批量改名,同样的是选择它的被单击事件,那么大家注意到就又来到了这里,这里呢,我们就要通过否则命令来进行判断。
如果来源对象等于哪一个呢?等于改名这个按钮,我们就要执行改名的操作。
改名的操作如何执行呢,肯定是。
在我们的这个列表框当中,找到所有的列啊,所有的项目,然后依次判断它是不是被选中了,如果被选中,我们就修改它的名字。所以说这里呢,我又需要一个循环,循环的起始值依然是零,因为数组从零开始,列表项这个索引也是从零开始,所以大家只要记住从零开始就可以了。那么同样的套路,我们就这样来写列表框文件点现在我们不是取数组的程度了,我们可以直接取这个选择列表框所有文件,呃,所有项目它的一个数量,所以就叫取项目数。循环变量,我们再新建一个变量。
因为大家注意上面的变量呢,归上面这个分支,下面这个呢,才是我们这个分支,大家不要搞混。
递增值写为一。
然后我们要依次判断是否被选中,那么如何判断是否被选中呢?我们可以搜索一下是否被选中。那么这个命令这么多,如何去找呢?一方面是可以靠记,因为一些常用的命令就是那么多,大家努力记一记可能就记得住。如果说你不太熟悉这个命令怎么办呢?告诉大家,可以到类库这里点击放大镜,然后选择你当前的视窗项目,这里我们要搜索的就是选中,对吧?因为前面的那个框可以叫做选中,我们就搜一下选中。
诶大家看到。
这里呢,有这么多,那么我们用的是什么?用的是选择列表框,所以我们看到这里有一个选择列表框的是否被选中,我们就查看一下它对不对,那么如果不对呢?假设啊,假设这里不对,我们就换个字,接着搜,我们试试是不是选择。
然后呢,发现也不对,我们就是通过能想到的这些关键字去尝试看看有没有能找到,那么当找了几次之后,熟练了之后就可以记住它了。那么前面如果不知道的话,肯定是要来这里动手查找一下的,通常的话,如果关键词选的没错的话,都是可以找到的,这里呢,我们就直接用是否被选中,是否被选中呢?需要我们提供一个索引,刚才我提到索引从零开始,他这里也写了,大家可以看到项目索引值从零开始,零是哪一个?
呃,不能说零是哪一个,应该说我们现在要取的索引是哪一个,是不是就是我们的这个循环变量,所以我们将循环变量添进去,它会给我们返回,是否选中。
我们就判断它,如果选中它就会等于真,如果没选中它就会等于假,所以说如果真的话,那么这个现在这个分支就是如果真后边的等于真,我们可以省略,因为如果他判断的就是真,所以你传给他一个条件是真的话,你就没必要再多写一个等于真了。
然后我们来看改名,改名是要将文件名当中我们看一下,这边要将文件名当中含有上面这个被替换内容编辑框里边的这个字符啊,替换成下边的这个内容,所以说我们这里呢,需要先将两个编辑框的内容取出来,再进行一个文本替换这样的操作,所以我们再新建两个变量。
被替换的文本,再新建一个替换成的文本。
我们需要先把它取出来,那么取就不需要在循环里边一直取,我们只取一次就可以了,等于编辑框被替换的内容,点内容,然后呢,替换成的文本,等于编辑框替换成的内容。
我们现在就将两个内容取出来,然后我们就可以进行替换,那么替换用哪个命令呢?同样我们可以来这里进行一下查找,那知道替换肯定就要搜替换命令,我们找一下,找啊找啊找,看到这里有一个子文本替换,诶那么它是文本替换啊当然上面这个也有,我们用下面这一个。
看到了所预操作的文本,预备替换的文本,用作替换的文本,哎,我们一看,这个差不多应该是符合我们的意思的,然后我们再看。
将所指定文本中的指定内容子文本替换为另一个文本,虽然可能看起来不太理解,那我们拿过来用一下看看效果就知道。
文本替换,那么现在问题来了,它的第一个参数来看第一个参数,我们要提供一个完整的文本。
第二个才应该是我们的被替换文本,第三个才是我们的替换成的文本,后面的话我们都可以留空,我们现在还不涉及到那么多,所以我们先留空,那么现在的问题就在于第一个参数如何去写,因为我们的。
这个。
选择框当中啊,保存的已经是只有文件名的这个内容了,再从这取的话可能不特别合适,那么我们就想一下,目录在这里,然后文件名在这里,我们可以用拼接的方式将两个拼起来。
是吧,这是一种方式,我们还可以将所有文件的这个数组啊。
设置成一个静态变量,我们可以把它放在上面大家看。
我们可以把它放在这里,然后呢,将它设置为静态,静态变量呢,就不会因为重啊,这个重复的初始化,然后被修改内容,它就会一直保持它原有的内容,除非你修改了它,只要你修改之后,它就一直保持,那么按照我们现在的逻辑,大家想一下,我在这里枚举文件之后。
相当于我把内容写进了这个变量,那么当我下一次枚举之前,这个变量都会一直保存,我之前枚举的这个结果是不是这样?
那这里呢,我们就直接使用。
这个。
数组,因为它是一个数组,那么这里呢,我们就要取成员,取得哪一个成员呢?就要取得当前I这个成员,因为I既对应着数组,又对应着选择列表框,所以我们直接用I这个成员,我们把它放到这里来,现在我们就得到了一个这样的一个。
完整的语句,然后我们仔细观察一下,我们发现子文本替换呢,诶好像没有返回值,如果有返回值话,大家看。
它的最前面是否被选中,前面会显示逻辑型,但是我们发现子文本替换前面什么都没显示,这表示什么呢?这表示这个没有返回值,那么它很有可能会将第一个参数作为返回值进行返回,所以这里呢,我们就必须用一个变量保存起来,因为它也是我们替换的结果,所以我这里保存替换的结果。
为什么让题结果先等于这个呢?因为我们用它既作为一个。
保存之前的,又让它作为一个替换之后的,那么这个时候我们看一下替换的结果,我们在这里进行一个输出,我们先看一下效果,先别急着运,呃,先别急着直接写文件改名。
好,我们先替换一下,看一下效果。
我们选中第234啊,就是副本二,副本三,副本四这三个,我们把副本修改成两个星星,然后呢,我们点击一下批量改名,大家看到下面输出了什么234,然后呢,中间的副本已经怎么样变成了星星了,所以说表示我们整的这一个。
替换没有问题。
好,那现在呢,我们是不是就可以进行一个文件的改名了,是吧,我们就进行文件的改名了,我们来看一下。
那么怎么改名呢?我们来调用文件更名改名啊,大家还是按照之前的那个方法搜索关键字就可以了,那么新文件名我们知道。
旧文件名是哪一个呀?旧文件名是不是这个取成员啊,它就是我们的旧文件名,我们要将旧的文件名改为新的文件名,并且呢,在最后修改之后输出一个信息框,修改完毕,好,我们现在来看一下效果。
我同样还是改刚才的234这三个文件,我将副本还是修改为星星,然后点击批量改名。
好,这里提示修改完毕,我们打开文件夹发现呢,诶好像不行,因为什么呢?因为这个星啊,刚好是通配符,所以我们换个字符,我们改成大写的两个X。
再进行改名。
诶,现在大家就看到这个效果,已经可以成功改名了,那就表示呢,我们这个命令执行的都是没有问题的,那下面大家思考这样的一个事情,如果我现在一项都没选中,我直接点击批量改名,他也提示修改完毕,那这个时候呢,它是不是就应该提示当前没有选择项目啊是吧?所以说我们必须整一个变量来记录我们是否已经改名。
这里呢,我们可以新建一个变量,是否以改名逻辑型它它的初始值我们可以给它默认设置为甲,因为默认它肯定是没改名的,那么当改名之后,我们再把它设置为真。
到最后我们必须根据是否改名这样的一个结果来进行判断啊,他是否要输出这个改名完毕,如果是否已改名等于真,那么我们就输出修改完毕,否则我们就输出请选择一个项目。
好,我们现在再来看。
点击选择目录定位到这里,点击确定,然后这边我先不选,直接点击大家看,请选择一个项目。
我现在选择几个项目,这边我不填的话,我点击按钮,它同样会抽出修改完毕,但实际上什么都没有做,所以这里呢,给大家留两个作业,第一。
就是这边这个位置,在不使用数组的情况下,使用当前选中的这个项目在拼接上。
用当前选择的这个项目,在拼接上之前选择的路径,得到一个完整文件名啊,得到一个完整文件名,然后用这个文件名进行替换,就不用里面提到的这个数组方式了啊,大家要注意第二个呢,就是大家自己写一个判断,如果说这两个当中都没有输入。
都没有输入,或者说第一个没有输入的时候,就提示他必要的内容没有填,那么注意这里呢,只能第一个没填要提示,两个都没填要提示,如果第二个没填是可以不用提示的,因为第二个如果不填呢,作用就是将上面的结果替换为一个空白,因为你不填它就是空白,那么系统就会按照空白去修改。
所以这里呢,大家可以尝试修改一下,那么在这里呢,要跟大家说明一个重要的事情,在改名的时候,一定要确定你改名的这个文件真实有效存在,并且可以修改,千万不要尝试改到一个。
呃,什么其他的,或者说跟其他文件重名,或者说给了一个这种改不了的格式,因为改名呢,是没有什么这这种内部检查的,你写什么名字,它就会改什么名字,如果你改到了一个已经存在的文件,那那个文件就直接会被覆盖,就没有办法找到了,所以大家一定要注意,要新建一个目录来自己测试啊,千万不要把系统搞坏了。
好,下面我们已经实现了功能,那么下面我们再来翻翻,回头看一遍我们这一节课用到的内容。首先窗口组件选择列表框支持选择项目的列表框,它比普通列表框要高级一点,我们分别用到了加入项目、取项目数、取选中状态三个命令。
大家看一下。
然后模块当中我们使用了目录浏览。
文件取文件名。
文件改名,还给大家演示了一下如何找到自己需要的命令。
普通命令的话呢,我们使用了自文本替换,因为信息框呢,在前面的课程中已经说过了,这里就不再多说了。然后就是数组,我们这里演示的是文本数组的使用,数组实际上也是一个类,我们只要按照类一个正常的用法调用它里边的成员就可以了,我们需要调用哪个就用哪个,大家看到这三个成员,或者说三个方法。
还没有评论呢,快来抢沙发~