[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
初看觉得不难,在实际编写中遇到了不少问题,也反复编写了几次。
因cmd最大能处理的数值是亿位,所以代码只考虑到亿位数值:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (一 二 三 四 五 六 七 八 九) do set /a n+=1&set "_%%a=!n!"
  3. for %%a in (十-0 百-00 千-000 亿-00000000) do (
  4.     for /f "tokens=1,2 delims=-" %%a in ("%%a") do set "_%%a=%%b"
  5. )
  6. for /f "delims=" %%a in (a.txt) do (
  7.     set /a num=0&set "str=%%a"
  8.     set "str=!str:零=!"
  9.     for %%a in (亿 万 千 百 十) do if "!str:%%a=!" neq "!str!" call :lp %%a
  10.     set /a num+=_!str!&echo !num!
  11. )
  12. pause>nul&goto :eof
  13. :lp
  14. if %1 neq 万 (
  15.    for /f "tokens=1* delims=%1" %%a in ("%str%") do set /a num+=!_%%a!!_%1!&set "str=%%b"
  16.    ) else (
  17.    for /f "tokens=1,2 delims=万" %%a in ("!str!") do set "var=%%a"&set "str=%%b"
  18.    for %%a in (千 百 十) do if "!var:%%a=!" neq "!var!" call :loop %%a
  19.    set /a num+=_!var!*10000
  20. )
  21. goto :eof
  22. :loop
  23. for /f "tokens=1* delims=%1" %%a in ("%var%") do set /a num+=!_%%a!!_%1!0000&set "var=%%b"   
复制代码
测试文本a.txt如下:
  1. 一千零二十二万零四十九
  2. 二亿二千二百二十二万二千二百二十四
  3. 四十三
  4. 五百零九
  5. 二百七十一
  6. 一千零二
  7. 五千零八十六
  8. 二千九百零三
  9. 三千四百五十五
  10. 九十九
  11. 三百零九万零七十
  12. 九亿零三
复制代码

[ 本帖最后由 batman 于 2009-11-11 00:01 编辑 ]
1

评分人数

    • foxJL: 我也是,开始觉得是小问题,仔细看了才知道 ...PB + 10
***共同提高***

TOP

返回列表