[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

如何将文件:
01.我爱你.mp3
02.祈祷.mp3
12神话.mp3
22.吻别.mp3
... ...

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

谢谢!
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

改名的规则是什么?楼主需要提供这个
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

就是想把名称前面的数字号码、有的还带有 . 号 去掉,全部直接用中文!

TOP

应该是只留汉字。
如果出现比如:再说1次我爱你.mp3的情况,比如365个祝福等等,楼主考虑一下规则
努力学习,努力挣分

TOP

这些部分内容有一些共同之处!
或者说批量去掉文件名中包含
*.  (*为通配符)
的内容!

TOP

取文件名,如果去掉*.的话你的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 编辑 ]
努力学习,努力挣分

TOP

原帖由 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 ...


怎么没有反应?

TOP

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 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  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 编辑 ]
努力学习,努力挣分

TOP

多谢!成功搞定!
  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%!
复制代码

TOP

有高手能帮忙注释么看不太明白

TOP

回复 11# realchong


哪里不明白?

TOP

想修改下,这个好像只能去掉前面的数字,如果中文后面有数字去不掉,里面好像有个循环吧

TOP

回复 13# realchong


建议整理一下自己的需求,单独发个帖子。

TOP

我就是想搞清楚每条命令的含义,好改出不同的作用,现在我看下来好像是用延迟变量做的,就是不断地取文件名的字符,和0-9匹配去掉,是从第一位开始一直取到不是数字循环就结束了,我想要改一个能去到文件名最后一位

TOP

返回列表