找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29433|回复: 14

[特效代码] [已解决]批量更改文件名中的部分内容?

[复制链接]
发表于 2010-5-8 22:51:51 | 显示全部楼层 |阅读模式
如何将文件:
01.我爱你.mp3
02.祈祷.mp3
12神话.mp3
22.吻别.mp3
... ...

批量更改为:
我爱你.mp3
祈祷.mp3
神话.mp3
吻别.mp3
... ...

谢谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-5-8 23:04:28 | 显示全部楼层
改名的规则是什么?楼主需要提供这个
 楼主| 发表于 2010-5-8 23:15:16 | 显示全部楼层
就是想把名称前面的数字号码、有的还带有 . 号 去掉,全部直接用中文!
发表于 2010-5-8 23:16:25 | 显示全部楼层
应该是只留汉字。
如果出现比如:再说1次我爱你.mp3的情况,比如365个祝福等等,楼主考虑一下规则
 楼主| 发表于 2010-5-8 23:17:52 | 显示全部楼层
这些部分内容有一些共同之处!
或者说批量去掉文件名中包含
*.  (*为通配符)
的内容!
发表于 2010-5-8 23:22:18 | 显示全部楼层
取文件名,如果去掉*.的话你的12神话.mp3这个是去不掉12的。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /s /b /a-d "你的文件夹路径"') do (
  4.   set str=%%~ni
  5.   for %%a in (0 1 2 3 4 5 6 7 8 9 .) do (
  6.    set stt=!str:%%a=!
  7.    ren !str!.mp3 !stt!.mp3
  8.       )
  9. )
  10. endlocal
复制代码
没测试,你备份一下然后看看,不对我继续修改

[ 本帖最后由 sgaizxt001 于 2010-5-8 23:23 编辑 ]
 楼主| 发表于 2010-5-8 23:28:52 | 显示全部楼层
原帖由 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 ...


怎么没有反应?
发表于 2010-5-8 23:42:16 | 显示全部楼层
1,批处理与mp3在同一目录
2,如果文件名不符合条件,将不被处理
3,不包括子目录:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.mp3) do (call:xing "%%~ni"
  3. ren "%%i" "!ye!.mp3")
  4. exit
  5. :xing
  6. set "ye=%~1"&set han=
  7. :gu
  8. for /l %%j in (0,1,9) do if "!ye:~%han%,1!"=="%%j" set/a han+=1&goto:gu
  9. if not "%han%"=="" set ye=!ye:~%han%!
  10. if "%ye:~0,1%"=="." set ye=%ye:~1%
复制代码
或是
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.mp3) do (call:xing "%%~ni"
  3. ren "%%i" "!ye!.mp3")
  4. exit
  5. :xing
  6. set "ye=%~1"&set han=
  7. :gu
  8. 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
  9. if not "%han%"=="" set ye=!ye:~%han%!
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-9 00:05 编辑 ]

评分

参与人数 1PB +10 收起 理由
Batcher + 10 乐于助人

查看全部评分

发表于 2010-5-8 23:47:17 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*.mp3) do (
  4.   set str=%%~ni
  5.   set stt=!str:*.=!
  6.   ren %%~nxi !stt!.mp3
  7. )
  8. endlocal
复制代码
如果都是数字.名字.mp3的话

[ 本帖最后由 sgaizxt001 于 2010-5-8 23:48 编辑 ]
 楼主| 发表于 2010-5-8 23:56:15 | 显示全部楼层
多谢!成功搞定!
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%i in (*.mp3) do (call:xing "%%~ni"
  3. ren "%%i" "!ye!.mp3")
  4. exit
  5. :xing
  6. set "ye=%~1"&set han=
  7. :gu
  8. 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
  9. if not "%han%"=="" set ye=!ye:~%han%!
复制代码
发表于 2011-12-13 15:12:30 | 显示全部楼层
有高手能帮忙注释么看不太明白
发表于 2011-12-13 15:16:44 | 显示全部楼层
回复 11# realchong


哪里不明白?
发表于 2011-12-13 15:42:25 | 显示全部楼层
想修改下,这个好像只能去掉前面的数字,如果中文后面有数字去不掉,里面好像有个循环吧
发表于 2011-12-13 17:17:00 | 显示全部楼层
回复 13# realchong


建议整理一下自己的需求,单独发个帖子。
发表于 2011-12-14 08:00:29 | 显示全部楼层
我就是想搞清楚每条命令的含义,好改出不同的作用,现在我看下来好像是用延迟变量做的,就是不断地取文件名的字符,和0-9匹配去掉,是从第一位开始一直取到不是数字循环就结束了,我想要改一个能去到文件名最后一位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 10:51 , Processed in 0.023846 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表