版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
[13]。本章节以宿迁学院的平面图为例,后面章节中不做说明,也采用该简化地图进行示范。首先在百度地图上搜索后获取到宿迁学院的简略平面地图见图10,为便于分析,需先将地图转换成只有黑白色块的地图。使用Java代码导入图像并设置像素阈值,将地图划分成黑白两色,白色的像素点视为道路,其余像素点视作障碍物,用黑色表示,将其栅格化成图11。在图11中白色代表道路,桥梁等可行走区域,黑色则代表湖泊,小山以及各类建筑障碍物等无法行穿行的区域。图10宿迁学院地图图11栅格化宿迁学院地图从结果来看,栅格化后的宿迁学院地图比较完整的体现了原地图的道路网,道路之间基本通畅,比例大小,障碍物的位置均原地图一致,适合作为A*算法的地图数据。3.2计算最短路线将栅格化处理后的地图文件用java代码编写的A*算法进行计算,分析出最短路线,展示在软件上,运行结果见图12,并将数据汇总至表1:图12Java代码A*算法运行结果图A*算法运行结果如图12所示,观察发现算法搜寻时间很短,运行效率高,寻找的路线与最短路线基本吻合,软件可以正常展示A*算法的特点和运行结果。表1Java代码A*算法运行数据实验次数12345起点2,912,912,9120,179156,122终点19,65156,151215,93281,264,33花费时间(ms)14236157是否找到路线是是是是否行走步数842232644990openList节点数2791466111448899107一共执行的搜索次数13014465714535133470189575由表1中数据不难发现,1、2、3、4次均成功找到路线,且花费时间随着移动的距离变短而变短,说明若搜寻的两个点初始距离越近,花费时间越短,这也是符合理论的。第5次实验终点选在了无法抵达的区域(左上角),因此未能找到结果,花费的时间最长且相近,说明算法遍历了整个地图,openList中所有方格都被遍历也未搜寻到路线。表格中可以看出最终行走的距离并不是影响搜索效率的关键因素,维护的openList列表以及执行的搜索次数才是影响算法效率的关键所在。而路径越是复杂往往需要越多的搜索资源去搜索。后续改进应该着重从减少搜索次数和改进算法搜索效率入手。4A*算法的改进一般来说,作为普遍应用的导航算法,A*算法在实际应用中应该考虑更多的因素,例如路况(路况好与坏影响行进的速度),客户需求(由于路况不同导致速度不通,最短路往往不是最快路线,若客户赶时间,此时最基本的A*算法便不适用),另外还有红路灯数量,限号限行,是否优先考虑高速公路等等。随着人们对生活质量的追求,越来越多的需求也促使人们对A*算法的不断改进。对于算法本身来说,A*算法随着地图的扩大,运算量呈指数级增加,如何在不减少算法精度的情况下减少运算量,提升算法效率成为最需要解决的问题。就目前的情况来看,一个既精准又快速还不怎么占存储空间的算法是不存在的,某些情况下牺牲了精准度从而提升了速度,又或许花费额外的时间提升精准度,还有一些通过对地图预处理,加快搜索速度,用空间代价交换时间代价的一种策略。本章将选取其中部分问题进行改进并得出结论。4.1减少转向从A到B本可以只转向一次就可到达的最短路径,有时算法给出了另一条阶梯状的最短路径,虽然从路程上来说而这并没有区别,但在实际生活中,如图13所示,在不考虑其他因素的情况下,同样的路程如果多次转向对车辆、燃料都会造成不必要的损耗。图13A*算法寻路图在算法中,G值代表代价,为了使算法在相同F值的情况下转向和直行中选择直行,需要对转弯适度的增加一定代价,每转一次弯,G值除了路程上的代价增加,还应该在每次转向时增加一个转向代价g即Gn=Gn+gn,运行图14改进权值后A*算法寻路图需要注意的是g的大小不应该大于单元格长度/期望行走的最大路线,否则随着路线的不断搜寻,有可能导致最后寻找的路线并不是最短路线,使算法不够准确。4.2栅格化精度的选取4.2.1栅格精度对算法计算效率和准确性的影响地图在栅格化处理的时候如果追求精度,将地图的像素划分的非常细小,无疑会指数级的增加算法的运算时间,而划分的过大又会导致路线不精确,甚至提供错误的路线。如何设定一个在满足精度的基础上,提升运行速度的栅格化方法是提升效率的关键。本文使用的方法是以最窄的可通过道路的宽度为1个栅格基准,这样可以尽可能地压缩地图,增加运算效率。但这会导致地图精度不够,有可能会造成这样一种结局:导航提示你到了目标点,然而实际上目标点还在你的右边十米处。显然这种结局不是所有人都能接受的,因此在接近目的地时应细化栅格,使导航更加精确。4.2.2针对栅格精度的改进方案在初期使用精度比较低的搜索方案,设定一个范围,当closeList中的点进入目标点周围的范围的时候说明你距离目标已经“足够近”了,这时重新划分精度,从当前点进行比较细致的A*搜索,这种方法也许找到的路线不是全局最优路线而是局部最优,但在长距离搜索时可以大大节约时间。在游戏领域这种方案应该更为广泛的应用——鼠标点击后游戏人物必须迅速响应,如果直接进行长距离的高精度A*搜索可能会出现人物“卡住”一下再移动的情况,降低玩家的游戏体验,而先进行低精度的A*搜索,让人物先动起来,在移动的时候再进行高精度的A*搜索,玩家不会有卡顿的感觉而且最终路线和最优路线不会有太大偏差。如图15起点为红色方格,终点为蓝色小方格,对其直接进行A*算法搜索,注意此时选取的栅格化精度较高。图15高精度A*算法初始图算法运算结果如图16所示,绿色方格是被搜索的方格,蓝色方格是被确定的最短路线。图16高精度A*算法运行结果图现在降低栅格化的精度,转化成大方格A*算法寻路(3*3的小方格转换成1个大方格),再次使用A*算法进行计算,运行结果如图17所示。图17低精度A*算法运行结果图在搜索到目标地3×3的黄色区域后转化回小方格,采用高精度A*搜索,效果如图18和图19。图18低精度A*算法的接近目标点区域图19近目标点区域的高精度A*算法运算结果拼接后得到的最终行进路线见图20:图20先低精度后高精度A*算法总路径算法具体运算数据汇总见表2。表2不同栅格精度的A*算法运行结果算法高精度先低精度后高精度花费时间(ms)31是否找到路线是是行走步数4951openList节点数88311搜索次数1972861分析:先通过低精度A*算法向前行进,接近目标点后再使用高精度A*算法,通过牺牲小部分最终路线的精度,大大提升了算法搜索的效率,且最终路线不会与最短路偏差太大,极大的节约了运算资源。如果运算资源较为充裕,可以缩短低精度A*算法的行走距离,在行走一段距离后即采用高精度A*算法,可以最大限度的提升路线的精度,又减少了等待的时间。例如在网络实时对战的游戏中,可以先进行低精度的A*算法,然后只行进一小段例如5%的路程,使玩家操作的角色迅速动起来,在移动5%路程后,利用这段时间计算机能够计算好后续的高精度A*算法的路线,从而使得后面95%的路线都是极为精确的最短路线。而随着计算机性能的不断完善,这5%的路程会被不断缩小,所产生的误差对玩家的游戏体验来说已经可以忽略不计了。这种注重目的地而不怎么考虑路程的思想也可以在估价函数H中加入一个权值实现——越接近目标点,这个函数就会计算的越精确,反之可以降低函数的精度,使一开始的路线不怎么耗费运算资源。4.3对地图进行节点化处理对于长距离移动来说,我们不应该也不可能对每一步都进行A*算法计算,即使采取降低栅格精度的策略有时也难以有效的降低算法复杂度,这时就要果断放弃栅格化,采用节点化的地图。在进行导航时,人们往往对细节精确到每一条道路,每一个路口,如果划分的再细致些也没有过多的意义,因为没有人会在意自己怎么通过一条没有岔路的直行道,反而会消耗硬件大量的算力,卫星的定位也难以精确到人的每一步上,因此不如只在路口处设置节点,最后导航的结果以道路名展示,用户只需沿着道路走即可到达目标点。对图10宿迁学院地图进行黑白二值化处理,然后对每个路口标记节点,效果如图21所示:图21以A*算法计算节点化地图初始图
原本数万像素的地图,在每个分叉路口设置一个节点,变成了仅有68个主节点的节点图。现在我们想从A点向B点进发,寻路时:分别找到起点和终点周围哈夫曼距离最近的主节点保存下来。用经典A*算法进行计算起始点到各自最近主节点的最短路线,因为距离通常较短,计算量很低。对两个已存储的主节点进行A*搜索,因为主节点的数量很少,计算量也很少。将三段路线进行拼接,最后得到的路线就是节点化处理的最短路线。运行后得到路线见图22。图22A*算法计算节点化地图运算结果算法几乎是瞬间完成了计算,两条绿色路线是起始点到主节点的最短路线,红色路线是两个主节点中的最短路线。不难看出最终行进的路线非常接近最短路线。优点:极大的提升了搜索效率,在长距离导航中优势明显。缺点:最终的路线不一定是最短路线,且在短距离寻路时可能会因节点过少而绕路,因此短距离时不应采用此方法。5结论与展望5.1结论A*算法结合了Dijkstra和BFS启发式思想,保证最短路的同时提升了效率,在实际应用中表现出色,寻路效率高,用时短。是现在被广泛使用的最短路算法。本文在经典A*算法的基础上加以改进,增加了转向时的权值,使得算法在多条相同预期的道路时,总会优先选择不怎么转向的道路。针对栅格化地图的A*算法,考虑到地图尺寸以及精度的需求,可能会造成的算法效率缓慢,用时过长的结果。采用先低精度后高精度的A*算法,减少了算法在初期的运算量,使用者不会体验到算法运行所产生的卡顿感,在软件性能有限的情况下非常实用。对于大地图道路网的导航,不需要对全图都进行栅格化,转换成在每个有道路连接的路口处设置节点,节点与节点之间的距离就是道路的长度。算法运算时只需要先将人导航到距离最近的节点,然后在节点中使用A*算法,可以大大提升算法效率。5.2展望 本文为方便计算将路径导航抽象成二维空间中正方形节点的寻路问题,且仅有4邻域移动方向,与现实生活中有较大差异,后续研究应该以更复杂的情况例如6邻域8邻域为研究对象,移动方向应有更多选择,对应的估价函数H也应由原本的曼哈顿距离改为欧氏距离或者其他更加准确的估价函数。在计算一段路线的移动代价时,只采用路径长度作为代价是不准确的,相同长度的道路在不同的路况影响下,通过时有较大的时间差异,后续研究应该加上路况的影响,以路线长度和路况好坏的综合评价结果作为移动的代价。 文中演示的道路节点大多道路连接分布均匀,而实际生活中的道路网存在大量无标度网络,应当进一步研究和调整,使算法适应更多不同网络。参考文献:郭阳.动态复杂网络的最短路径研究[D].辽宁大学,2019.梁娟.网络最短路径问题的研究与应用[D].南京邮电大学,2015.刘宏魁.基于A-star算法的地图查询系统的设计与实现[J].电子技术与软件工程,2018(22):44.李坤,蒋莉莉.分布式计算中基于A-star的工作流调度改进算法研究[J].计算机工程与科学,2013,35(03):38-42.宋岩.基于A-Star算法的进路搜索研究[D].西南交通大学,2014.刘熙明,魏旭,窦立刚,覃洪波,杨露溪.基于A-Star算法的AdHoc无线网络最优路由模型研究[J].佛山科学技术学院学报(自然科学版),2019,37(04):38-42.刘微,肖华勇.复杂网络中近似最短路径问题[J].计算机系统应用,2016,25(05):107-112.时也.基于A-Star算法与模糊控制融合的移动机器人路径规划[D].武汉科技大学,2012.王恒青,宋如敏.最短路径算法Dijkstra算法在路由选择中的应用[J].科技信息(学术研究),2008(32):569-570.向志华,赖小平.基于BFS算法的有阻断路径的最短路径算法研究[J].信息通信,2019(11):41-42.谢晖,张达奇,冯李.结合曼哈顿距离的A-star算法在光缆寻址中的应用[J].信息通信,2019(01):34-36.吴健.基于A-star改进路径规划算法研究[D].安徽工业大学,2019.万平.基于A-star算法的航路规划算法设计与仿真研究[J].中国水运.航道科技,2018(04):58-65.致谢时光荏苒,4年的大学生活如白驹过隙般转瞬即逝,宿迁学院大校园生活给了我许多快乐和惊喜。大学的学习生活让我学到了为人处世的原则和专业的知识理论,而我已不再是从前那个无知的少年,衷心祝愿母校未来发展得更好!首先我要感谢蒋涛导师在对我的指导和讲解,从论文材料的收集、题目的确认和理解、创新点的研究、论文的反复修改一直到最终的论文定稿,蒋老师都给了我非常多的帮助,让我对选题有了一个深刻的理解和认识,期间对我的提问也是热心解答。中期检查时指出我论文的不足,并协助我完善内容。疫情期间无法见面讨论,导师督促我们抓紧完成论文后网上对我们进行了指导。可以看出导师为了协助我完成论文顺利毕业付出了很多,态度也是一丝不苟,不容有一点错误,这种严谨踏实的风格令我十分尊敬。尤其是在我的论文进展出现问题时,老师即使提醒和指导,使论文进度得以正常进行。其次还要感谢在宿迁学院的各科的任课老师在校期间对我的栽培,正是有了他们的督促,我没有虚度四年的大学时光,用在校时间学习很多理论知识。还要感谢高燕辅导员,在日常生活中和学习工作上对我的大力支持,辅导员的认真负责让我的学习生活很少遇到阻碍,很多事情在辅导员的帮助下迎刃而解,感谢宿迁学院的老师们,使我顺利完成这篇论文!还要感谢各位对我论文做出帮助的同学,很多小问题例如格式,一些零散的知识点,在学校没有完善的部分,是多亏了同学们的帮助,在小问题上节约了我大量的精力,让我可以腾出时间去钻研论文,感谢你们的一路陪伴!最后对本次论文的评阅专家致以最诚挚的敬意!附录package读取;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.MouseEvent;importjava.awt.event.MouseListener;importjavax.swing.JFrame;importjavax.swing.JPanel;publicclassAStar{ staticint[][]NODES=newint[292][260]; staticint[][]DRAW=newint[292][260]; staticint[][]point=newint[2][2];staticintpointNumber=0;staticArrayList<Node>arrayList=newArrayList<Node>();publicstaticfinalintSTEP=10;privateArrayList<Node>openList=newArrayList<Node>();privateArrayList<Node>closeList=newArrayList<Node>();publicNodefindMinFNodeInOpneList(){NodetempNode=openList.get(0);for(Nodenode:openList){if(node.F<tempNode.F){tempNode=node;}}returntempNode;}publicArrayList<Node>findNeighborNodes(NodecurrentNode){ArrayList<Node>arrayList=newArrayList<Node>();inttopX=currentNode.x;inttopY=currentNode.y-1;if(canReach(topX,topY)&&!exists(closeList,topX,topY)){arrayList.add(newNode(topX,topY));}intbottomX=currentNode.x;intbottomY=currentNode.y+1;if(canReach(bottomX,bottomY)&&!exists(closeList,bottomX,bottomY)){arrayList.add(newNode(bottomX,bottomY));}intleftX=currentNode.x-1;intleftY=currentNode.y;if(canReach(leftX,leftY)&&!exists(closeList,leftX,leftY)){arrayList.add(newNode(leftX,leftY));}intrightX=currentNode.x+1;intrightY=currentNode.y;if(canReach(rightX,rightY)&&!exists(closeList,rightX,rightY)){arrayList.add(newNode(rightX,rightY));}returnarrayList;}publicbooleancanReach(intx,inty){if(x>=0&&x<NODES.length&&y>=0&&y<NODES[0].length){returnNODES[x][y]==0;}returnfalse;}publicNodefindPath(NodestartNode,NodeendNode){openList.add(startNode);while(openList.size()>0){NodecurrentNode=findMinFNodeInOpneList();openList.remove(currentNode);closeList.add(currentNode);ArrayList<Node>neighborNodes=findNeighborNodes(currentNode);for(Nodenode:neighborNodes){if(exists(openList,node)){foundPoint(currentNode,node);}else{notFoundPoint(currentNode,endNode,node);}}if(find(openList,endNode)!=null){returnfind(openList,endNode);}}returnfind(openList,endNode);}privatevoidfoundPoint(NodetempStart,Nodenode){intG=calcG(tempStart,node);if(G<node.G){node.parent=tempStart;node.G=G;node.calcF();}}privatevoidnotFoundPoint(NodetempStart,Nodeend,Nodenode){node.parent=tempStart;node.G=calcG(tempStart,node);node.H=calcH(end,node);node.calcF();openList.add(node);}privateintcalcG(Nodestart,Nodenode){intG=STEP;intparentG=node.parent!=null?node.parent.G:0;returnG+parentG;}privateintcalcH(Nodeend,Nodenode){intstep=Math.abs(node.x-end.x)+Math.abs(node.y-end.y);returnstep*STEP;}privatestaticvoidflash(){ NodestartNode=newNode(point[0][0],point[0][1]); NodeendNode=newNode(point[1][0],point[1][1]); Nodeparent=newAStar().findPath(startNode,endNode); while(parent!=null){ arrayList.add(newNode(parent.x,parent.y)); parent=parent.parent; } System.out.println("\n"); for(inti=0;i<NODES.length;i++){ for(intj=0;j<NODES[0].length;j++){ if(exists(arrayList,i,j)){ System.out.print("@,"); }else{ System.out.print(NODES[i][j]+","); } } System.out.println(); }}publicstaticvoidmain(String[]args)throwsIOException{ Filef=newFile("D://QAP.txt"); BufferedReaderbuf=newBufferedReader(newFileReader(f)); int[][]city=newint[292][260]; intline=0; Stringstr=null; while((buf.read())!=-1){ str=buf.readLine(); String[]date=str.split(""); Strings=date[0]; int[]a=newint[s.length()]; for(inti=0;i<s.length();i++){a[i]=Integer.parseInt(String.valueOf(s.charAt(i)));} for(inti=0;i<a.length;i++){NODES[line][i]=a[i];DRAW[line][i]=a[i];} line++; } NodestartNode=newNode(point[0][0],point[0][1]); NodeendNode=newNode(point[1][0],point[1][1]); Nodeparent=newAStar().findPath(startNode,endNode); while(parent!=null){ arrayList.add(newNode(parent.x,parent.y)); parent=parent.parent; } System.out.println("\n"); JFramejFrame=newJFrame(); JPaneljpanel=newJPanel(){ publicvoidpaint(Graphicsgraphics){ super.paint(graphics); for(inti=0;i<NODES.length;i++){ for(intj=0;j<NODES[0].length;j++){ if(exists(arrayList,i,j)){ graphics.setColor(Color.BLUE); graphics.fillRect(3*j,3*i,3,3); }elseif(NODES[i][j]==1){ graphics.setColor(Color.BLACK); graphics.fillRect(3*j,3*i,3,3); }elseif(DRAW[i][j]==2){ graphics.setColor(Color.RED); graphics.fillRect(3*j,3*i,3,3); } } System.out.println(); } } }; jFrame.add(jpanel); jFrame.setSize(680,900); jFrame.setVisible(true); jpanel.addMouseListener(newMouseListener(){ @Override publicvoidmouseClicked(MouseEvente){ DRAW[(int)(e.getY()/3)][(int)(e.getX()/3)]=2; System.out.println(e.getX()); System.out.println(e.getY()); pointNumber++; point[pointNumber-1][0]=(int)(e.getY()/3); point[pointNumber-1][1]=(int)(e.getX()/3); flash(); jpanel.repaint(); } @Override publicvoidmouseEntered(MouseEventarg0){ } @Override publicvoidmouseExited(MouseEventarg0){ } @Override publicvoidmousePressed(MouseEventarg0){ } @Override publicvoidmouseReleased(MouseEventarg0){ } }); }publicstaticNodefind(List<Node>nodes,Nodepoint){for(Noden:nodes)if((n.x==point.x)&&(n.y==point.y)){returnn;}returnnull;}publicstaticbooleanexists(List<Node>nodes,Nodenode){for(Noden:nodes){if((n.x==node.x)&&(n.y==node.y)){
HYPERLINK电脑文件整理懒招从来都是不会经常整理文件的,不过时间一长,众多的文档分布在硬盘的各个角落,用目录进行整理保存,工作量大、查看起来也不方便且还会浪费不少的磁盘空闻;用压缩工具打包,尽管可以节约空间但是却无法直接编辑修改或查看压缩包中的文件。这些招,懒人怎么会用,他们自有妙招!再多再乱的文件也能整理得井井有条,关键是不费力哦!
懒招1,自动提取乱中取胜
小张起初将照片、Office文档、电影、音乐等文件一股脑地存放在某一个磁盘分区,刚开始文件少使用起来倒也方便,但随着时间的推移,文件数量剧增,每次找所需的文件都要瞪大眼睛,不过有了MY文档管理器(下载地址:)就不用担心了。
第一步,下载MY文档管理器,解压到任意目录,直接双击其中的可执行性文件即可使用。依次单击“节点操作→添加节点”,分别添加多个节点,如“办公文档”、“电影”等分类,这样做的目的是方便归类。
第二步,在小张的F盘中的TEST目录下有众多的RM、MP3、JPG、DOC、TXT格式的文件,现在他要把JPG格式的文件提取到“照片”类别中。依次单击“系统配置→文件过滤”选项,打开Dialog对话框,输入“*.doc”,单击“添加”按钮,意思是过滤掉所有类型为“.DOC”的文件。然后按照同样的方法,将“*.txt”、“*.rm”、“*.MP3”一一添加进来。
第三步,双击左侧窗格中的“照片”节点,然后依次单击“记录操作→导入记录树”命令,在打开的对话框中单击浏览按钮,打开“F:\test”目录,单击“确定”按钮之后就可以将格式为JPG的文件提取出来并添加到“照片”节点中了。
懒招2,不同的电脑统一的管理
小张是电爱的Fans,工作之余常常为杂志写稿,他写完的和正在处理的稿件一般都存在一个稿件文件夹里。不过时间一长,家里的电脑(PC1)和单位的电脑(PC2)上都有这个文件夹。时常需要通过移动硬盘(U盘)在两台电脑之间传递,使用和管理都很不方便。不过他现在用优盘就可以统一管理了。
第一步,将上文提到的那个MY文档管理器解压后直接拷贝到优盘上。把优盘插到PC1上,并运行软件,依次单击“记录操作→导入记录树”命令,在随后弹出的对话框中设置好“稿件”文件夹的根目录,将“导入深度”设置为“5”,单击“确定”后,稍等片刻,软件就把PC1上的“稿件”导入到MY文档管理器中。
小提示:通过这种方式导入到程序中的仅仅是文件的路径、文件名等属性信息,并不是文件本身。
第二步,把优盘插到PC2上,按照同样的方法导入PC2上的“稿件”文件。以后要编辑“稿件”里的文件,你自己根本不用记住哪台电脑的哪个路径,只要把优盘插入到电脑,运行MY文档管理器,就可以直接编辑了。
第三步,为方便在异地使用,小张决定为当前正在处理的稿件增加一个副本。在需要异地处理的稿件上右键单击,选择“复制文件到(自动添加副本)”命令,在弹出的对话框中将保存目录设置为优盘上的某个目录即可。这样,就可以在优盘上编辑PC1或PC2的稿件了。
小提示:对于PC1、PC2上的同名文件,MY文档管理器以不同的磁盘号+文件路径来标识文件记录,因此,对于不同电脑上的同名文件,甚至是路径和文件名完全相同的文件,程序也可以准确识别哪个是哪个。
懒招3多种文件批量移动
要将文件管理得井然有序,就免不了要进行复制、删除、移动等等操作,如果一个个进行操作,工作量是非常巨大的。这时我们就需要借助于BelvedereAutomated(下载地址:.com/assets/resources/2008/03/Belvedere%200.3.exe)进行批量操作了。例如我们想把“F:\test”目录中的所有照片移动到F盘中的“北京游照片”目录中,可以按以下方法进行。
第一步,建立“F:\test”目录后在“rule”一栏中,单击“+”按钮,建立一个规则。在“Descriptior”文本框中为当前规则起一个名字如“批量整理移动”。单击第一个下拉列表,在这里可以选择Name(文件名)、Extension(扩展名)、Size(大小)等进行操作,这里选择扩展名“Extension”。单击第二个下拉列表,在这里设置的是操作条件,有is(是)、isnot(不是)、contains(包含)等操作可供选择,这里选择的是“is”。接下来,在最后的文本框中输入图片文件的扩展名,示例中是“JPG”。定义的规则合起来的意思就是“扩展名是JPG”。
第二步,在“Dothefollowing”区域设置操作动作,单击第一个下拉列表进行操作动作的选择,有“Movefile(移动)、Renamefile(重命名)、Deletefile(删除)”等动作可供选择,我们要批量移动,那就选择重命名“Movefile(移动文件)”。接下来,单击后面的按钮选择“F:\北京游照片”目录。
第三步,规则设置完毕,单击“Test”按钮应用规则,程序即可一次性地将所有扩展名为“JPG”的图片文件移动到“F:\北京游照片”目录中了。
懒招4提纲挈领一点即得
在前面几大懒招的帮助下,你电脑里的文件应该已经有点类别了吧。如果从此想告别懒人的生活,那就要养成管理文件的好习惯了。
第一步,在你保存资料的电脑分区中,要接类别建立多个文件夹,可以按用途分为:学习、娱乐、暂存、工作、下载,在娱乐下又可以建立二级目录:电影、歌曲、动画等。也可以按照常见的文件性质进行分类,例如分为:图片、电影、电子书、安装文件等,当然也可以按照你的需要再建立二级目录,以后每有文件需要保存就按这个类别保存到相应的目录。
第二步,虽然现在已经把文件分门别类存放了,但时间长了,目录太深,一层一层查找也很麻烦的,在EXCEL里建一个目录就可以统一管理了。运行EXCEL后,新建一个表格,然后按照我们的分类方式隔行输入:图片、电影、电子书,在图片分类下再建立二级目录名,例如明星、汽车、壁纸等。
第三步,右键单击“图片文字”,选择“超链接”,在弹出的对话框中选择电脑里图片目录文件夹,单击“确定”后EXCEL里的“图片”文字就变成彩色。用同样的方法为一级目录的“电影、电子书”和二级目录的“明星、汽车、壁纸”等添加超链接。然后将这个EXCEL文件命名为文件目录,保存到桌面上,以后打开这个文档,直接单击相应的文字,比如单击“壁纸”,就可以切换到壁纸文件夹了。
小提示:如果要更改某个超链接,直接右键单击该文字,选择“编辑超链接”就可以了。本人的电脑分类原则简述如下。
硬盘的第一层(请在自己的件夹中右键“按组排列”查看)
第一位字母表示A生活娱乐B教学C工作D安装程序
第二位字母表示只是流水号
AA影视
AB音乐
AC阅读
AD图片
AE相册
生活娱乐
BA计算机
BB英语
BC运动
BD游戏攻略
BE衣食住行
BF文艺
教学
CA管理制度
CB流程图
CC程序文件
工作
DA娱乐
DB其它
安装程序
硬盘的第二层(进入“AA影视”的文件夹举例)
第一位字母表示只是流水号
第二位字母表示只是流水号
AA电影
BA电视剧
CAMTV
硬盘的第三级(进入“AA电影”的文件夹举例)
第一位字母表示A动作片B剧情片C动画片
第二位字母表示A未看过B已看过
AA导火线
AB尖峰时刻
动作片
BA独自等待
剧情片
CB机器猫
CB狮子王
动画片
利用“字母排序”和“按组排列查看”可以使文件查看和存放简洁明了,结合自己资料的特点和实际需求,给自己定一个分类原则并严格执行。个人电脑资料的资源会得到高效而充分的利用。电脑文件管理八条小技巧
在电脑的内部,在电脑的桌面上,在“资源管理器”中,充斥着无序与混乱,这种虚拟的混乱极大地影响了电脑的性能和我们办公的效率,当大家面临这个问题时,通常认为硬盘空间又不够了,电脑性能又不跟不上了,需要再换一台新的电脑了。事实上,我们真正需要的是坐下来,好好花时间将电脑里的文件真正管理起来,会为自己日后省下更多的时间。
文件管理的真谛在于方便保存和迅速提取,所有的文件将通过文件夹分类被很好地组织起来,放在你最能方便找到的地方。解决这个问题目前最理想的方法就是分类管理,从硬盘分区开始到每一个文件夹的建立,我们都要按照自己的工作和生活需要,分为大大小小、多个层级的文件夹,建立合理的文件保存架构。此外所有的文件、文件夹,都要规范化地命名,并放入最合适的文件夹中。这样,当我们需要什么文件时,就知道到哪里去寻找。
这种方法,对于相当数量的人来说,并不是一件轻松的事,因为他们习惯了随手存放文件和辛苦、茫无头绪地查找文件。
下面,我们将帮你制订一套分类管理的原则,并敦促您养成好的文件管理习惯。以下是我们总结出的一些基本技巧,这些技巧并不是教条,可能并不适合你,但无论如何你必须要有自己的规则,并坚持下来,形成习惯。
一、发挥我的文档的作用
有很多理由让我们好好地利用“我的文档”,它能方便地在桌面上、开始菜单、资源管理器、保存/打开窗口中找到,有利于我们方便而快捷地打开、保存文件。我们可以利用“我的文档”中已有的目录,也可以创建自己的目录,将经常需要访问的文件存储在这里。至于“我的文档”存储在C盘,在重装系统时可能会误删除的问题,可以在非系统盘建立一个目录,然后右击桌面上的“我的文档”,选择“属性”。在弹出的“我的文档属性”窗口中,单击目标文件夹下的“移动”按钮,然后在新的窗口中指定我们刚创建的文件夹。重装系统后再次执行以上操作,再重新指向此文件夹即可,即安全又便捷。
小提示:如果你使用Windows2000/XP,则移动“我的文档”文件夹时,其下的所有文件会自动移过去,但如果你使用Windows9x,则需要手工将C:MyDocuments下的所有文件手工移到新指定的文件夹中,否则可能会丢失数据。
二、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论