标题: [文件操作] 批处理如何提取文件夹名中的特定字符串并对该文件夹里的文件按要求重命名 [打印本页]
作者: aya1412 时间: 2012-9-27 12:52 标题: 批处理如何提取文件夹名中的特定字符串并对该文件夹里的文件按要求重命名
本帖最后由 pcl_test 于 2016-11-9 18:09 编辑
我有一批这样的文件要整理..如下:
■■201207■[Binbogamiga 穷神]___08
[Airota][Campione!][07][848x480][x264_AAC][GB].mp4
[CASO][Binbogamiga!][01][GB][720x480].rmvb
[CASO][Binbogamiga!][05][GB][720x480].mp4
[CASO][Binbogamiga!][06][GB][720x480].mp4
■■201207■[Campione 弑神者]___03
[DMG][Campione!][01][704x396][BIG5].rmvb
[strsub][Campione!][02][GB][1280×720].mp4
【DA同音字幕組】【Campione!_弑神者】【03】【mp4】【1280X720】【big5】【繁體】.mp4
■■201207■[chitose Get You! 千岁]___09
[A.I.R.nesSub][Chitose_Get_You!][04][TVRIP][720p].chs.ass
[A.I.R.nesSub][Chitose_Get_You!][04][TVRIP][720p].mp4
[Airota][Chitose_Get_You!!][05][1280x720][x264_AAC][BIG5].mp4
[Airota][Chitose_Get_You!!][06][1280x720].mp4
[Airota][Chitose_Get_You!!][06][1280x720][x264_AAC][BIG5].mp4
有■■的是文件夹..下面的几行是比较乱的文件名..求助这个批处理..有没有这样的功能:
1.判断或者说是识别一个文件名中的某一部分的能力??
2.还有对比两个文件的大小的能力??
如果可以的话..我想要的处理效果是:
1.文件夹内文件..只保留"[01]".."[02]".."[03]".."[04]"..等等..这种前后中括号里面是数字的..数字有可能是2位..有可能是3位..只保留中括号加数字..把其它的都删掉..扩展名不变~
2.如果有同样的文件..比如说最终结果有两个"[01]"的话..把其它的同名但是容量较小的文件在方括号后面加上一个序号..但是"ASS扩展名的文件除外"~
3.提出文件夹名中的"[??????]"这个部分..加在文件名前面..
比如第一个文件夹的结果就是:
■■201207■[Binbogamiga 穷神]___08
[Binbogamiga 穷神][07].mp4
[Binbogamiga 穷神][01].rmvb
[Binbogamiga 穷神][05].mp4
[Binbogamiga 穷神][06].mp4
求助哪位大大帮忙解决这个机械的劳动吧..
论坛不常上..有兴趣的大在麻烦加一个QQ:193004..先谢谢了!
作者: 喃喃努努 时间: 2012-9-27 16:32
脑袋大了,好复杂。
作者: batman 时间: 2012-9-27 20:11
本帖最后由 batman 于 2012-9-27 20:13 编辑
头痛的特殊字符。。。
同时楼主提到的“但是"ASS扩展名的文件除外"~”不明白是什么意思,暂未作处理
请自行测试再使用- @echo off
- for /d %%a in (*) do (
- for /f "tokens=2 delims=[]" %%i in ("%%~na") do (
- for /f "delims=" %%b in ('dir /b "%%a"') do (
- set "str=%%b"
- setlocal enabledelayedexpansion
- if exist $ for /f "tokens=1,2 delims==" %%b in ($) do set /a %%b=%%c
- for /f "tokens=3 delims=[]" %%c in ("!str!") do set "name=[%%i][%%c]"
- set "n=!name!"&set "n=!name: =!"
- for /f "delims=" %%c in ("!n!") do (
- set /a %%c%%~xb+=1&echo %%c%%~xb=!%%c%%~xb!>>$
- if !%%c%%~xb! equ 1 (
- ren "%%a\!str!" "!name!%%~xb"
- ) else (
- ren "%%a\!str!" "!name:~,-1!_!%%c%%~xb!]%%~xb"
- )
- )
- endlocal
- )
- )
- del /q $ 2>nul
- )
- echo 搞定!&pause>nul
复制代码
作者: batman 时间: 2012-9-27 20:42
PS:楼主标题违规,发错版块,主题没有分类,本人已修改过来,请下次发帖时注意,本次且不做处罚,下不为例。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |