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

如果简单的像你列举的那样,章回数不超过100回,可以这样:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (一 二 三 四 五 六 七 八 九 十) do (
  4. set /a x+=1
  5. set _%%i=!x!
  6. )
  7. for /f "tokens=1* delims=第回" %%a in ('dir /b /a-d "*.m4a"') do (
  8.     set str=%%a
  9.     set m1=!str:~,2!
  10.     set m2=!str:~2,1!
  11.     if "!m1:~,1!"=="十" (
  12.         set /a n=10+_!m1:~1,1!
  13.     ) else if "!m1:~1,1!"=="十" (
  14.         set /a n=_!m1:~,1!*10+_!m2!
  15.     ) else (
  16.         set n=_!m2!
  17.     )
  18.     set n=0!n!
  19.     set n=!n:~-2!
  20.     ren "第%%a回%%b" "第!n!回%%b"
  21. )
  22. pause
复制代码
代码另存为ANSI编码。未经测试。
1

评分人数

TOP

回复 4# hfxiang
谢谢测试代码。
有几点要说明的是:
1.不存在版权问题。实际上都是在抄写前辈们的代码,只不过构架不同而已;
2.由于主要变量都是数字形式,这里采用set /a就是为了避免变量嵌套带来的麻烦,可以自己体会一下;
3.谢谢指正代码中的错误。实际上写代码时,3楼代码第16行变量设置时漏掉了参数/a,变量值也不对,导致错误的发生。修改时不需要这么复杂。改为下面的代码即可:
  1. set /a n=_!m1!
复制代码
欢迎再次测试!!!

TOP

回复 7# idwma
正点!!!

TOP

本帖最后由 qixiaobin0715 于 2022-8-4 16:43 编辑

有样学样,适合数值小于十万。来一个不用goto的:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str=九万九千九百九十九
  4. set str=!str:零=!
  5. for %%i in (一 二 三 四 五 六 七 八 九) do (
  6.     set /a x+=1
  7.     set _%%i=!x!
  8. )
  9. set x=1
  10. for %%i in (十 百 千 万) do (
  11.     set /a x*=10
  12.     set #%%i=!x!
  13.     set %%i=1
  14. )
  15. for /l %%i in (0,2,8) do (
  16.     set var=!str:~%%i,2!
  17.     if not "!var!"=="" (
  18.         if not "!var:~1!"=="" set /a m1=!var:~1!
  19.         set /a m2=!var:~,1!
  20.         if "!m1!"=="1" (
  21.             set /a n+=_!var:~,1!*#!var:~1!
  22.         ) else if "!m2!"=="1" (
  23.             set /a n+=#!var:~,1!+_!var:~1!
  24.         ) else (
  25.             set /a n+=_!var!
  26.         )
  27.         set m1=
  28.         set m2=
  29.     )
  30. )
  31. echo,!n!
  32. set n=
  33. pause
复制代码
1

评分人数

TOP

回复 13# idwma
好像还是有bug。比如:十亿零九。1000000009

TOP

本帖最后由 qixiaobin0715 于 2022-8-13 11:19 编辑

回复 6# whink
一般来说小说的章回都不会超过10000吧。代码可以写的更通用一些(适合章回数小于10000):
  1. @echo off
  2. set m=3
  3. setlocal enabledelayedexpansion
  4. for %%i in (一 二 三 四 五 六 七 八 九) do (
  5.     set /a x+=1
  6.     set /a _%%i=!x!
  7.     set y=1
  8.     for %%j in (十 百 千) do (
  9.         set /a y*=10
  10.         set /a _%%i%%j=!x!*!y!
  11.     )
  12. )
  13. set _十=10
  14. for /f "tokens=1* delims=第回" %%a in ('dir /b /a-d "*.m4a"') do (
  15.     set str=%%a
  16.     set str=!str:零=!
  17.     for %%i in (十 百 千) do set str=!str:%%i=%%i !
  18.     set n=10000
  19.     for %%j in (!str!) do set /a n+=_%%j
  20.     ren "第%%a回%%b" "第!n:~-%m%!回%%b"
  21. )
  22. pause
复制代码
代码另存为ANSI编码,未经测试。
代码第2行m=3为保留3位数字,可以自行修改,范围是2~4。
1

评分人数

    • whink: 感谢。。。技术 + 1

TOP

返回列表