懒惰是进步的动力---八上媳妇儿手机照片200G+, 严重影响了她的心情。加之我们想要整理下照片,就想着保存在硬盘上以后可以回忆过去。谁曾想导出来倒是导出来了,但是密密麻麻的2W+照片视频,让我分类去?这不得累死了么。本着能让电脑动就绝不自己动的想法开始实操。我是写JAVA的,第一想法就是用JAVA做,而且我的小工具箱里读文件啥的小工具不要太丰富,但是这个电脑是Win呀!要装JAVA?我这种有工具洁癖的人,咋能污染系统呢?pass...然后Python?也要装,得嘞~拜拜Python...啥是Win的内置工具?批处理
对,就是那个丑逼...JAVA第一思路,获取文件名列表。换到这里是? dir /B
所以写入到一个列表就是
我去学习了一下怎么写,糟心的几个小时就按下不表了。下面上成品
![535d6f0d995e3639523768c812785d2b.png](https://i-blog.csdnimg.cn/blog_migrate/f1bdccfdecbd2b9660d9d62cea50036d.png)
![23c53306a87cfadb4ee7aac06f3f8643.png](https://i-blog.csdnimg.cn/blog_migrate/5a1aac49054fbd45ebf53be3a01bbf36.png)
dir *.* /B> list.txt
当前文件夹下得到一个list.txt. 里面都是文件名字。我的照片导出的时候都加上了日期前缀,eg. 2010_12_15_IMG_0014.JPG,那正好我就可以用前十位来处理文件, 建立对应的文件夹。程序语言能难的到我么?对,可以的
![8b6a2e11a7faa261de2b4cafe11a40ef.png](https://i-blog.csdnimg.cn/blog_migrate/08da9c4748ab38f4b1dfdbcffcfbed3c.png)
@echo offrem delay init varParamsetlocal enabledelayedexpansionrem foreach echo pwd & full_namefor /f %%a in (list.txt) do ( set "full_name=%%a" set "name=!full_name:~0,10!" set "pwd=E:\iPics\!name!" if not exist !pwd! md !pwd! move !full_name! !pwd!)pause
第一行关掉回显第二行装逼写个注释第三行设置延时赋值,这里要说下Win的批处理中赋值是即时的,比如
@echo offset eightUp=1set eightUp=2&echo %eightUp%pause
这结果是啥?是 1 . 命令行解析处理是按行读取处理的。eightUp 在第二行的时候赋值了 1 。然后第三行echo的时候 eightUp 已经预处理为 1 了, 所以打印出来的时候是 1 ,不是我们认为的 2.下面继续第四行装装逼再来个注释第五行执行for循环,读取list.txt文件里的内容。就是上面第一段代码生成的结果第六行拿到文件的全名, 这里需要留着是因为后面移动的时候要用文件全名来处理第七行获取文件前缀前十个字符,就是我设置的日期。当然朋友们如果有别的需求也可以自己改哈第八行设置一个全路径我这里是直接用了日期处理的,一个日期是一个文件夹,当然可以直接分为年、月、日。这样生成的就是一组套娃,按年月日划分的文件夹第九行如果第八行的全路径不存在就创建一个,存在就不说了第十行移动,把第六行的全名拿出来,直接移动到第八行的全路径文件夹下第十一行就是个括号,标识结束for循环第十二行pause,字面意思。你也可以exit~哈哈哈哈哈哈
效果图
![23c53306a87cfadb4ee7aac06f3f8643.png](https://i-blog.csdnimg.cn/blog_migrate/5a1aac49054fbd45ebf53be3a01bbf36.png)