标题: [特效代码] [已解决]批量更改文件名中的部分内容? [打印本页]
作者: bat2010 时间: 2010-5-8 22:51 标题: [已解决]批量更改文件名中的部分内容?
如何将文件:
01.我爱你.mp3
02.祈祷.mp3
12神话.mp3
22.吻别.mp3
... ...
批量更改为:
我爱你.mp3
祈祷.mp3
神话.mp3
吻别.mp3
... ...
谢谢!
作者: hanyeguxing 时间: 2010-5-8 23:04
改名的规则是什么?楼主需要提供这个
作者: bat2010 时间: 2010-5-8 23:15
就是想把名称前面的数字号码、有的还带有 . 号 去掉,全部直接用中文!
作者: sgaizxt001 时间: 2010-5-8 23:16
应该是只留汉字。
如果出现比如:再说1次我爱你.mp3的情况,比如365个祝福等等,楼主考虑一下规则
作者: bat2010 时间: 2010-5-8 23:17
这些部分内容有一些共同之处!
或者说批量去掉文件名中包含
*. (*为通配符)
的内容!
作者: sgaizxt001 时间: 2010-5-8 23:22
取文件名,如果去掉*.的话你的12神话.mp3这个是去不掉12的。
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /s /b /a-d "你的文件夹路径"') do (
- set str=%%~ni
- for %%a in (0 1 2 3 4 5 6 7 8 9 .) do (
- set stt=!str:%%a=!
- ren !str!.mp3 !stt!.mp3
- )
- )
- endlocal
复制代码
没测试,你备份一下然后看看,不对我继续修改
[ 本帖最后由 sgaizxt001 于 2010-5-8 23:23 编辑 ]
作者: bat2010 时间: 2010-5-8 23:28
原帖由 sgaizxt001 于 2010-5-8 23:22 发表
取文件名,如果去掉*.的话你的12神话.mp3这个是去不掉12的。
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b /a-d "你的文件夹路径"') do (
set str=%%~ni
for %%a in (0 ...
怎么没有反应?
作者: hanyeguxing 时间: 2010-5-8 23:42
1,批处理与mp3在同一目录
2,如果文件名不符合条件,将不被处理
3,不包括子目录:- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.mp3) do (call:xing "%%~ni"
- ren "%%i" "!ye!.mp3")
- exit
- :xing
- set "ye=%~1"&set han=
- :gu
- for /l %%j in (0,1,9) do if "!ye:~%han%,1!"=="%%j" set/a han+=1&goto:gu
- if not "%han%"=="" set ye=!ye:~%han%!
- if "%ye:~0,1%"=="." set ye=%ye:~1%
复制代码
或是- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.mp3) do (call:xing "%%~ni"
- ren "%%i" "!ye!.mp3")
- exit
- :xing
- set "ye=%~1"&set han=
- :gu
- for %%j in (0,1,2,3,4,5,6,7,8,9,.) do if "!ye:~%han%,1!"=="%%j" set/a han+=1&goto:gu
- if not "%han%"=="" set ye=!ye:~%han%!
复制代码
[ 本帖最后由 hanyeguxing 于 2010-5-9 00:05 编辑 ]
作者: sgaizxt001 时间: 2010-5-8 23:47
- @echo off
- setlocal enabledelayedexpansion
- for %%i in (*.mp3) do (
- set str=%%~ni
- set stt=!str:*.=!
- ren %%~nxi !stt!.mp3
- )
- endlocal
复制代码
如果都是数字.名字.mp3的话
[ 本帖最后由 sgaizxt001 于 2010-5-8 23:48 编辑 ]
作者: bat2010 时间: 2010-5-8 23:56
多谢!成功搞定!- @echo off&setlocal enabledelayedexpansion
- for %%i in (*.mp3) do (call:xing "%%~ni"
- ren "%%i" "!ye!.mp3")
- exit
- :xing
- set "ye=%~1"&set han=
- :gu
- for %%j in (0,1,2,3,4,5,6,7,8,9,.) do if "!ye:~%han%,1!"=="%%j" set/a han+=1&goto:gu
- if not "%han%"=="" set ye=!ye:~%han%!
复制代码
作者: realchong 时间: 2011-12-13 15:12
有高手能帮忙注释么看不太明白
作者: HAT 时间: 2011-12-13 15:16
回复 11# realchong
哪里不明白?
作者: realchong 时间: 2011-12-13 15:42
想修改下,这个好像只能去掉前面的数字,如果中文后面有数字去不掉,里面好像有个循环吧
作者: HAT 时间: 2011-12-13 17:17
回复 13# realchong
建议整理一下自己的需求,单独发个帖子。
作者: realchong 时间: 2011-12-14 08:00
我就是想搞清楚每条命令的含义,好改出不同的作用,现在我看下来好像是用延迟变量做的,就是不断地取文件名的字符,和0-9匹配去掉,是从第一位开始一直取到不是数字循环就结束了,我想要改一个能去到文件名最后一位
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |