本帖最后由 pcl_test 于 2020-12-24 18:18 编辑
- @echo off
- rem 调用方法call :num2ch 阿拉伯数字 结果
- rem 最大支持999999999999
- call :num2ch 123454321 result
- echo;%result%
- pause&exit
- :num2ch
- set "num=%~1"
- set "num=%num: =%"
- for /f "tokens=* delims=0" %%a in ("%num%") do if "%%a" equ "" (set num=0) else set num=%%a
- set t=%num%cba987654321
- set /a len=0x%t:~12,1%
- set str=零一二三四五六七八九十百千万十百千亿十百千
- set /a len-=1
- setlocal enabledelayedexpansion
- for /l %%a in (0 1 %len%) do (
- for %%b in (!num:~%%a^,1!) do set s=!s!!str:~%%b,1!
- if !len! gtr 0 (
- set /a m=len+9
- for %%b in (!m!) do set s=!s!!str:~%%b,1!
- )
- set /a len-=1
- )
- for %%a in (千 百 十) do set s=!s:零%%a=零!
- set s=!s:亿零零零零万=亿零!
- for %%a in (亿 万) do (
- for %%b in (零零零 零零 零) do set s=!s:%%b%%a=%%a!
- )
- for %%a in (零零零零 零零零 零零) do set s=!s:%%a=零!
- if "!s:~1,1!" neq "" if "!s:~-1!" equ "零" set s=!s:~,-1!
- if "!s:~,2!" equ "一十" set s=!s:~1!
- endlocal&set "%~2=%s%"&goto :eof
复制代码
|