我新手,不入流动,最近想给电脑中的文件分类。于是写了一下代码(就是满处抄的)
目前可以用,但是功能有个缺陷 它只能按扩展名分类。
所以在此我想求助大神们
1.可以不可以让他对 其他文件分类。就是指定扩展名以外的文件
2.可不可以在 上一个功能的基础上,再让其按照一定规律 或者说是 关键词分类!
例如: 某目录下, 电视剧 封神榜,01 02 03 04.... 济公传 01 02 03 04.... 均为.RMVB文件,
可不可以在其 按照扩展名分类的基础上 再检索关键字为 封神榜 自动对 封神榜
减速关键字为 济公传 对济公传 进行归类
效果如下
自己满处抄来的代码 现在只能按扩展名分类。
如代码有什么不妥之处,也请大神们指出。我虚心接受!
PS 自己用,并非商业目的。感觉强大的批处理代码可以完成!
这样表示应该清楚我想做什么了吧。就是文件太多。一个一个分太费劲!- 执行前-----某目录\*\*\*\*\*.* N多个
- 执行后-----某目录\完成\扩展名\关键字\*关键字*.*
- 执行后-----某目录\完成\扩展名\*.*(无关键字的)
- 执行后-----某目录\完成\其他\关键字\*关键字*.*
- 执行后-----某目录\完成\其他\*.*(无关键字的
复制代码 其实我用的代码就这一点儿,但是匹配关键字我不会了,也没找到。
感谢15楼 15# apang 的大神
读懂了我的要求,解决了我的问题! 当然也很感谢其他几位大神。也许你们把我的问题想复杂了。
现将我改动过的代码发出来以表敬意(由于需要改动)
成品代码- @echo off&color 0a&title %~n0【高级版】by: 批处理之家大神【apang】 ^|当前时间:%time:~0,5%
- ::定义关键字和扩展名
- echo+
- echo+ 本程序由【批处理之家】大神【apang】制作。
- echo+
- set /p keyWord=<D:\备份\关键字.ini
- set "DstDir=完成"
- for %%a in (jpg bmp gif jpe png jpeg) do set ".%%a=图片"
- for %%a in (txt doc dot docx pdf ppt pot pps) do set ".%%a=其他\文本"
- for %%a in (wmv rmv rmvb rm mp4 mkv avi wm wmp) do set ".%%a=电影"
- for %%a in (flv 3gp ram mov mpg mpeg swf) do set ".%%a=电影\手机格式"
- set ".torrent=其他\种子"
- for %%a in (rar zip 7z) do set ".%%a=程序\压缩包"
- for %%a in (mp3 aac wav) do set ".%%a=音乐"
- for %%a in (ini gl) do set ".%%a=配置"
- set /p a=请选择是否整理可执行文件(整理请输入Y):
- if /i "%a%"=="Y" for %%a in (exe bat) do set ".%%a=程序"
- if /i "%a%"=="y" for %%a in (exe bat) do set ".%%a=程序"
- :Lp
- if exist "%DstDir%\" (set /p DstDir=目标目录已存在,请重新指定: & goto :Lp )
- ::执行分类
- for /f "delims=" %%a in ('dir /a-d /b /s') do (
- if /i "%%a" NEQ "%~f0" (
- setlocal enabledelayedexpansion
- set "fPath=%%a"
- set "fName=%%~na"
- if defined %%~xa (
- for %%b in ( %keyWord% ) do (
- if "!fName:%%~nb=!" NEQ "!fName!" (
- md "%DstDir%\!%%~xa!\%%~nb\"
- move "!fPath!" "%DstDir%\!%%~xa!\%%~nb\"
- ) )
- md "%DstDir%\!%%~xa!\"
- move "!fPath!" "%DstDir%\!%%~xa!\"
- ) else (
- md "%DstDir%\其他\"
- move "!fPath!" "%DstDir%\其他\"
- )
- endlocal
- ) ) 2>nul
- ::删除空目录
- cls&echo+&echo+ 分类完成,稍后自动退出
- for /f "tokens=*" %%i in ('dir/s/b/ad^|sort /r') do rd "%%i" >nul 2>nul
- ping -n 2 127.1 >nul
复制代码 再次感谢大姐的帮助。 |