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

[文本处理] 求txt里面将文件名中文序号转换成数字序号的批处理,是从“一”开始,变成001那样

本帖最后由 IGOfilm 于 2024-3-26 22:52 编辑

如:
第一卷(第1~8话)ROMANCE DAWN 冒险的黎明(发行日期:1997年12月24日)
第二卷(第9~17话)对抗巴基海贼团(发行日期:1998年4月3日)
第三卷(第18~26话)不须隐瞒的事(发行日期:1998年6月4日)
第四卷(第27~35话)新月(发行日期:1998年8月4日)
第五卷(第36~44话)钟声为谁而鸣(发行日期:1998年10月2日)
.....
第一百卷(第1005~1015话)霸王色(发行日期:2021年9月3日)
第一百零一卷(第1014~1025话)巨星登场(发行日期:2021年12月3日)
第一百零二卷(第1026~1035话)天王山(发行日期:2022年4月4日)
第一百零三卷(第1036~1046话)解放的战士(发行日期:2022年8月4日)
第一百零四卷(第1047~1055话)和之国将军 光月桃之助(发行日期:2022年11月4日)
第一百零五卷(第1056~1065话)路飞的梦(发行日期:2023年3月3日)

转换成:

第001卷(第1~8话)ROMANCE DAWN 冒险的黎明(发行日期:1997年12月24日)
第002卷(第9~17话)对抗巴基海贼团(发行日期:1998年4月3日)
第003卷(第18~26话)不须隐瞒的事(发行日期:1998年6月4日)
第004卷(第27~35话)新月(发行日期:1998年8月4日)
第005卷(第36~44话)钟声为谁而鸣(发行日期:1998年10月2日)
.....
第100卷(第1005~1015话)霸王色(发行日期:2021年9月3日)
第101卷(第1014~1025话)巨星登场(发行日期:2021年12月3日)
第102卷(第1026~1035话)天王山(发行日期:2022年4月4日)
第103卷(第1036~1046话)解放的战士(发行日期:2022年8月4日)
第104卷(第1047~1055话)和之国将军 光月桃之助(发行日期:2022年11月4日)
第105卷(第1056~1065话)路飞的梦(发行日期:2023年3月3日)

回复 2# aloha20200628 大佬牛逼

TOP

本帖最后由 aloha20200628 于 2024-3-27 11:41 编辑

回复 1# IGOfilm
以下代码存为test.bat,在记事本中编码选择ansi(简中编码);
一楼示例文件存为1.txt,在记事本中编码选择ansi(简中编码);
转换结果文件为1.new.txt
代码中子过程CnToAn9999的转换能力上限=9999,本脚本基于示例文件设定001-999
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "tokens=1* delims=第卷" %%1 in (1.txt) do (
  3. (call :CnToAn9999 %%1 n)
  4. set "n=00!n!"&echo,第!n:~-3!卷%%2
  5. ))>1.new.txt
  6. exit/b
  7. :CnToAn9999 // %1=中文数字符串(实值) %2=返回值变量名
  8. if "%~1"=="零" set "%~2=0"&exit/b
  9. set "cn#=%~1"&set "cn#=!cn#:零=!"&set "uList=十,百,千"
  10. set/a "n#=0,一=1,二=2,三=3,四=4,五=5,六=6,七=7,八=8,九=9,十=10,百=100,千=1000"
  11. for /L %%k in (0, 2, 6) do if "!cn#:~%%k,1!" neq "" (
  12.     set "n2c=!cn#:~%%k,2!" &set "nc1=!n2c:~0,1!" &set "nc2=!n2c:~1,1!"
  13.     if "!nc2!"=="" (set/a n#+=!nc1!) else for %%c in (!nc2!) do (
  14.         if "!uList:%%c=!" neq "!uList!" (set/a n#+=!nc1!*!nc2!) else (set/a n#+=!nc1!+!nc2!)
  15.     )
  16. )
  17. set "%~2=!n#!" &exit/b
复制代码
1

评分人数

TOP

返回列表