标题: [文件操作] [已解决]帮忙写一个可以整理mp3文件到指定文件夹的批处理 [打印本页]
作者: wujuyema 时间: 2010-3-6 15:57 标题: [已解决]帮忙写一个可以整理mp3文件到指定文件夹的批处理
首先说明下,我对批处理不是很熟悉,只是个低级的初学者
但是从我所看到的与批处理相关的教程中,我认为批处理可以完成这个任务
具体的任务是这样的
在一个文件夹下(以下简称主文件夹),有大量的mp3或者wma文件,
都是按“歌手 - 歌曲名.扩展名”的行式保存的
为了减少在路径处理上的麻烦,可以减少对路径上的要求,
使用的时候把批处理复制到这个主文件夹下就可以了
运行该批处理后,首先提示输入某个歌手名,如:刘德华
输入后回车,查找当前主文件夹下是否有此“刘德华”子文件夹,
有则进入下一步,否则建立这个“刘德华”子文件夹
然后查找主文件夹(不用查找子文件夹)中文件名包含“刘德华”的mp3和wma文件
并移动(不是复制)到刘德华的子文件夹
结束一次操作
可以选择结束或者经行下一个歌手的操作
具体就是这样,希望那个高手可以完成 谢谢了先
[ 本帖最后由 wujuyema 于 2010-3-7 17:14 编辑 ]
作者: qingyuedufeng 时间: 2010-3-6 17:05
- @echo off
- color 0a
- setlocal enabledelayedexpansion
- :start
- set/p int=请输入歌手名:
- if not exist !str! md !str!
- for %%a in (mp3,wma) do (
- set _en=%%a
- for /r . %%i in (*.!_en!) do (
- findstr %%~ni && move "%%i" "!str!"
- )
- )
- cls&echo.&echo.&echo 歌手!str!的歌曲已复制完成!
- echo 按任意键重新选择歌手...
- set int=
- pause>nul&goto start
-
- 代码未经过测试~
复制代码
作者: test2010 时间: 2010-3-6 21:56
- @echo off
- set ext=mp3 wma
-
- :input
- set /p word=搜索:
- cls
- set exist=
- for %%a in (%ext%) do (
- if exist "*%word%*.%%a" set exist=d
- )
- if not defined exist (
- echo;不存在含“%word%”的文件名
- echo;
- echo;按任意键返回重新输入...
- pause>nul
- cls
- goto input
- )
-
- md "%word%" 2>nul
- for %%a in (%ext%) do (
- move "*%word%*.%%a" "%word%" >nul 2>nul
- )
- echo;整理完成!
- echo;
- pause
- cls
- goto input
复制代码
作者: wujuyema 时间: 2010-3-7 17:04
刚刚在另一个论坛verybat.org的一个友友w5212帮忙写了一个代码
非常智能化,速度快可以快速建立文件夹并把歌曲转进去
我加了一句"*.lrc"就可以把歌词也顺便复制进去了
顺便谢谢以上俩位友友的帮忙
- @echo off&setlocal enabledelayedexpansion
- title 音乐自动分类工具
- mode con cols=80 lines=6&color 0a
- echo 请稍候……
- for /f "delims=" %%i in ('dir/s/b/a-d/on "*.mp3" "*.wma"') do (
- set /a k+=1)
- set /a the=!k!/32&cls
- echo 学而时习之,不亦乐乎!
- echo 光辉BAT制作……
- set/p=开始 <nul
- for /f "delims=" %%i in ('dir/s/b/a-d/on "*.mp3" "*.wma"') do (set "c=%%~ni"&set /a yes+=1
- for %%a in (@ + - — 、 _ , ^&) do set c=!c:%%a= !
- for /f %%j in ("!c!") do (
- if not exist "%%j\" (if /i "!a!"=="%%j" (md "%%j"
- move/y "%%i" "%%j\"&move/y "!b!" "%%j\"&set b=) else (set b=%%i)) else (move/y "%%i" "%%j\")
- set a=%%j)
- if !yes!==!the! (set yes=0&set /p=■<nul)
- )
- echo 结束&pause
-
复制代码
[ 本帖最后由 wujuyema 于 2010-3-7 17:14 编辑 ]
作者: namejm 时间: 2010-3-7 19:49
若仅是顶楼的那些要求,则4楼的代码并不适合楼主:当存在多重子文件夹的时候,很有可能导致文件错乱,因为4楼的代码是对所有的子文件夹也起作用的;需要注意的是,4楼的代码还有很多其他多余的动作,比如替换输入字符串中的一些字符,并不刚好适用于楼主的需求——w5212也说了,那个代码是他自己使用的,言外之意,它并不一定适合楼主。
若仅仅为了满足顶楼的那些需求,另加处理lrc文件,则建议使用如下代码:
- @echo off
-
- :Main
- cls
- set name=
- set /p name=请输入歌手的姓名(退出请直接回车):
- if not defined name exit
- md %name% 2>nul
- for %%i in (mp3 wma lrc) do move "*%name%*.%%i" %name% 2>nul
- pause
- goto Main
复制代码
作者: conglin58 时间: 2011-5-4 20:58
这个很实用!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |