标题: [文件操作] [已解决]批处理将文件名中的汉字序数转换成阿拉伯数字序数【2】 [打印本页]
作者: whink 时间: 2022-8-6 11:49 标题: [已解决]批处理将文件名中的汉字序数转换成阿拉伯数字序数【2】
本帖最后由 whink 于 2022-8-6 20:32 编辑
将下面的第三集改成第3集,第十一集改成第11集。
在喜马拉雅里面下载的文件,出现了新问题。论坛里的其它类似代码运行没有效果。这里先谢过各位大佬了。
【01】流言四起 第八集|多多罗.mp3
【01】流言四起 第六集|多多罗.mp3
【01】流言四起 第四集|多多罗.mp3
【02】发财的方法 第一集|多多罗.mp3
【02】发财的方法 第七集|多多罗.mp3
【02】发财的方法 第三集|多多罗.mp3
【02】发财的方法 第九集|多多罗.mp3
【02】发财的方法 第二集|多多罗.mp3
【02】发财的方法 第五集|多多罗.mp3
【02】发财的方法 第八集|多多罗.mp3
【02】发财的方法 第六集|多多罗.mp3
【02】发财的方法 第十一集|多多罗.mp3
【02】发财的方法 第十集|多多罗.mp3
【02】发财的方法 第四集|多多罗.mp3
【03】来自头顶的危险 第一集|多多罗.mp3
【03】来自头顶的危险 第七集|多多罗.mp3
【03】来自头顶的危险 第三集|多多罗.mp3
【03】来自头顶的危险 第九集|多多罗.mp3
【03】来自头顶的危险 第二集|多多罗.mp3
作者: hfxiang 时间: 2022-8-6 12:16
修改原有的脚本读入行为:- for /f "tokens=1-2* delims=第集" %%a in ('dir /b /a-d "*.mp3"') do ...
复制代码
即可
作者: whink 时间: 2022-8-6 12:32
运行了没有效果。原因未知
作者: whink 时间: 2022-8-6 12:38
@echo off
setlocal enabledelayedexpansion
for %%i in (一 二 三 四 五 六 七 八 九 十) do (
set /a x+=1
set _%%i=!x!
)
for /f "tokens=1-2* delims=第集" %%a in ('dir /b /a-d "*.mp3"') do (
set str=%%a
set m1=!str:~,2!
set m2=!str:~2,1!
if "!m1:~,1!"=="十" (
set /a n=10+_!m1:~1,1!
) else if "!m1:~1,1!"=="十" (
set /a n=_!m1:~,1!*10+_!m2!
) else (
set /a n=_!m1!
)
call set "str1=%%str:十=%%"
if !str1!. EQU !str!. set /a n=0+_!m1!
set n=0!n!
set n=!n:~-2!
ren "第%%a集%%b" "第!n!集%%b"
)
endlocal
作者: whink 时间: 2022-8-6 12:39
提示系统找不到指定的文件。哪一行出错了呢
作者: hfxiang 时间: 2022-8-6 12:43
本帖最后由 hfxiang 于 2022-8-6 12:45 编辑
回复 5# whink
完整写法如下:- @echo off
- setlocal enabledelayedexpansion
- for %%i in (一 二 三 四 五 六 七 八 九 十) do (
- set /a x+=1
- set _%%i=!x!
- )
- for /f "tokens=1-2* delims=第集" %%a in ('dir /b /a-d "*.mp3"') do (
- set str=%%b
- set m1=!str:~,2!
- set m2=!str:~2,1!
- if "!m1:~,1!"=="十" (
- set /a n=10+_!m1:~1,1!
- ) else if "!m1:~1,1!"=="十" (
- set /a n=_!m1:~,1!*10+_!m2!
- ) else (
- set /a n=_!m1!
- set n=0!n!
- )
- rem set n=!n:~-2!
- ren "%%a第%%b集%%c" "%%a第!n!集%%c"
- )
- endlocal
复制代码
作者: whink 时间: 2022-8-6 12:53
提示命令语法不正确。
作者: hfxiang 时间: 2022-8-6 13:25
回复 7# whink
俺测试完全正常,请保存为Ansi编码格式执行。
作者: whink 时间: 2022-8-6 13:42
谢谢。保存为ANSI编码就好了。
作者: qixiaobin0715 时间: 2022-8-16 16:57
本帖最后由 qixiaobin0715 于 2022-11-27 09:57 编辑
通用些的代码:章回数小于10000;兼顾“第???集(或章、回)”在最前面或中间;文件名其它地方最好不要出现“第或章或回或集”。代码保存为ANSI编码:- @echo off
- set m=3
- setlocal enabledelayedexpansion
- for %%i in (一 二 三 四 五 六 七 八 九) do (
- set /a x+=1
- set /a _%%i=!x!
- set y=1
- for %%j in (十 百 千) do (
- set /a y*=10
- set /a _%%i%%j=!x!*!y!
- )
- )
- set _十=10
- for /f "tokens=1,2* delims=第集" %%a in ('dir /b /a-d "*.mp3"') do (
- if "%%c"=="" (
- set str=%%a
- ) else (
- set str=%%b
- )
- set str=!str:零=!
- for %%i in (十 百 千) do set str=!str:%%i=%%i !
- set n=10000
- for %%j in (!str!) do set /a n+=_%%j
- if "%%c"=="" (
- ren "第%%a集%%b" "第!n:~-%m%!集%%b"
- ) else (
- ren "%%a第%%b集%%c" "%%a第!n:~-%m%!集%%c"
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |