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

[文本处理] 人民币大写转换.bat

本帖最后由 jiavip 于 2025-1-10 23:38 编辑

潜水10几年甚少发帖,前段时间做会计的朋友工作需要叫我帮忙编写个 人民币大写脚本!起初在网上找了一堆脚本,感觉都不怎么靠谱(也有可能是自己水平有限,理解不同)于是自己编写了一个!
用法就是扔到%WINDIR%目录下,取名RMB.BAT朋友需要用的时候只需要按WIN+R输入(RMB + 阿拉伯数字 )然后就可以转换成 大写单位,原本可以想用Clip 命令直接复制到剪切板里的。
但朋友说不需要。就省略了。她知道怎么从批处理文件里复制文字。
给朋友的脚本还有其他附带很多转换和其他自用功能,这里只帖出 《人民币大写转换》部分。
  1. :RMB
  2. Call,:Cnm 74 15 1 & Title 人民币大写转换
  3. Set/a Q=02102452501
  4. @ECHO OFF
  5. REM 百度得出中文单位分别是:清净(10的负二十一次方)、虚空、六德、刹那、弹指、瞬息、须臾、逡巡、模糊、漠、渺、埃、尘、沙、纤、微、忽、丝、毫、厘、分、零、壹、贰、叁、肆、伍、陆、柒、捌、玖、分、角、圆、拾、佰、仟、萬、亿、兆、京、垓、秭、穰、沟、涧、正、载、极(10的四十八次方)
  6. REM QQ:%QQ%
  7. Echo %~1|FindStr "^[0-9]*$">Nul || echo 非法输入!按任意键退出!&&PAUSE>NUL&&EXIT
  8. SET RMB检测=
  9. SET RMB检测=%~1
  10. SET RMB窗口=
  11. SET RMB窗口=%~1
  12. SET 单位=圆
  13. :RMB位数
  14. SET RMB窗口=%RMB窗口:~1%
  15. Set/a RMB位数+=1
  16. Set/a 窗口长度=%窗口长度%+4
  17. IF NOT "%RMB窗口%"=="" GOTO,RMB位数
  18. If %窗口长度% Lss 15 Set 窗口长度=15
  19. Set/a 窗口长度=%窗口长度%+2
  20. Call,:Cnm 74 %窗口长度% 2
  21. ECHO.   QQ:%Q%
  22. ECHO.输入:%~1
  23. :RMB循环
  24. SET/a RMB位数-=1
  25. CALL,:RMB转换 %RMB检测:~0,1% %RMB位数%
  26. SET RMB检测=%RMB检测:~1%
  27. IF NOT "%RMB检测%"=="" GOTO,RMB循环
  28. PAUSE>NUL
  29. EXIT
  30. :RMB转换
  31. IF "%~1"=="0" GOTO,RMB零
  32. IF "%~1"=="1" SET/P="壹"<NUL
  33. IF "%~1"=="2" SET/P="贰"<NUL
  34. IF "%~1"=="3" SET/P="叁"<NUL
  35. IF "%~1"=="4" SET/P="肆"<NUL
  36. IF "%~1"=="5" SET/P="伍"<NUL
  37. IF "%~1"=="6" SET/P="陆"<NUL
  38. IF "%~1"=="7" SET/P="柒"<NUL
  39. IF "%~1"=="8" SET/P="捌"<NUL
  40. IF "%~1"=="9" SET/P="玖"<NUL
  41. IF "%~2"=="51" SET/P="仟"<NUL
  42. IF "%~2"=="50" SET/P="佰"<NUL
  43. IF "%~2"=="49" SET/P="拾"<NUL
  44. IF "%~2"=="48" SET/P="极"<NUL
  45. IF "%~2"=="47" SET/P="仟"<NUL
  46. IF "%~2"=="46" SET/P="佰"<NUL
  47. IF "%~2"=="45" SET/P="拾"<NUL
  48. IF "%~2"=="44" SET/P="载"<NUL
  49. IF "%~2"=="43" SET/P="仟"<NUL
  50. IF "%~2"=="42" SET/P="佰"<NUL
  51. IF "%~2"=="41" SET/P="拾"<NUL
  52. IF "%~2"=="40" SET/P="正"<NUL
  53. IF "%~2"=="39" SET/P="仟"<NUL
  54. IF "%~2"=="38" SET/P="佰"<NUL
  55. IF "%~2"=="37" SET/P="拾"<NUL
  56. IF "%~2"=="36" SET/P="涧"<NUL
  57. IF "%~2"=="35" SET/P="仟"<NUL
  58. IF "%~2"=="34" SET/P="佰"<NUL
  59. IF "%~2"=="33" SET/P="拾"<NUL
  60. IF "%~2"=="32" SET/P="沟"<NUL
  61. IF "%~2"=="31" SET/P="仟"<NUL
  62. IF "%~2"=="30" SET/P="佰"<NUL
  63. IF "%~2"=="29" SET/P="拾"<NUL
  64. IF "%~2"=="28" SET/P="穰"<NUL
  65. IF "%~2"=="27" SET/P="仟"<NUL
  66. IF "%~2"=="26" SET/P="佰"<NUL
  67. IF "%~2"=="25" SET/P="拾"<NUL
  68. IF "%~2"=="24" SET/P="秭"<NUL
  69. IF "%~2"=="23" SET/P="仟"<NUL
  70. IF "%~2"=="22" SET/P="佰"<NUL
  71. IF "%~2"=="21" SET/P="拾"<NUL
  72. IF "%~2"=="20" SET/P="垓"<NUL
  73. IF "%~2"=="19" SET/P="仟"<NUL
  74. IF "%~2"=="18" SET/P="佰"<NUL
  75. IF "%~2"=="17" SET/P="拾"<NUL
  76. IF "%~2"=="16" SET/P="京"<NUL
  77. IF "%~2"=="15" SET/P="仟"<NUL
  78. IF "%~2"=="14" SET/P="佰"<NUL
  79. IF "%~2"=="13" SET/P="拾"<NUL
  80. IF "%~2"=="12" SET/P="兆"<NUL
  81. IF "%~2"=="11" SET/P="仟"<NUL
  82. IF "%~2"=="10" SET/P="佰"<NUL
  83. IF "%~2"=="9" SET/P="拾"<NUL
  84. IF "%~2"=="8" SET/P="亿"<NUL
  85. IF "%~2"=="7" SET/P="仟"<NUL
  86. IF "%~2"=="6" SET/P="佰"<NUL
  87. IF "%~2"=="5" SET/P="拾"<NUL
  88. IF "%~2"=="4" SET/P="萬"<NUL
  89. IF "%~2"=="3" SET/P="仟"<NUL
  90. IF "%~2"=="2" SET/P="佰"<NUL
  91. IF "%~2"=="1" SET/P="拾"<NUL
  92. IF "%~2"=="0" SET/P="%单位%"<NUL
  93. SET 零=0
  94. GOTO,:EOF
  95. :RMB零
  96. SET 后零=%RMB检测:~1,1%
  97. IF "%~2"=="4" SET/P="萬"<NUL&SET 零=4&GOTO,:EOF
  98. IF "%~2"=="8" SET/P="亿"<NUL&SET 零=8&GOTO,:EOF
  99. IF "%~2"=="12" SET/P="兆"<NUL&SET 零=12&GOTO,:EOF
  100. IF "%~2"=="16" SET/P="京"<NUL&SET 零=16&GOTO,:EOF
  101. IF "%~2"=="20" SET/P="垓"<NUL&SET 零=20&GOTO,:EOF
  102. IF "%~2"=="24" SET/P="秭"<NUL&SET 零=24&GOTO,:EOF
  103. IF "%~2"=="28" SET/P="穰"<NUL&SET 零=28&GOTO,:EOF
  104. IF "%~2"=="32" SET/P="沟"<NUL&SET 零=32&GOTO,:EOF
  105. IF "%~2"=="36" SET/P="涧"<NUL&SET 零=36&GOTO,:EOF
  106. IF "%~2"=="40" SET/P="正"<NUL&SET 零=40&GOTO,:EOF
  107. IF "%~2"=="44" SET/P="载"<NUL&SET 零=44&GOTO,:EOF
  108. IF "%~2"=="48" SET/P="极"<NUL&SET 零=48&GOTO,:EOF  
  109. IF "%零%"=="0" ( IF NOT "%后零%"=="0" SET/P="零"<NUL&SET 零=1 )
  110. GOTO,:EOF
  111. EXIT
复制代码
CNM 标签是窗口调用,就是设置窗口大小和脚本颜色,就不贴出来了。
水平马虎,欢迎大佬们完善、指点、查错、和质询!

学习学习,感谢分享。

TOP

感谢创作并分享!拿走使用了哈

TOP

回复 3# fzp070
那脚本有个小BUG 如果输入 125000的时候会导致脚本以零结尾,且单位不显示!
碰巧我求助的脚本疑难有人帮我解决,我就修善了一下这脚本!帖上完整的可用脚本吧!
  1. @ECHO OFF
  2. Call,:Cnm 74 30 2 & Title 人民币大写转换
  3. Echo.请输入人民币的阿拉伯数字:
  4. Set/p 数字=
  5. Call,:RMB %数字%
  6. :RMB
  7. REM 百度得出中文单位分别是:清净(10的负二十一次方)、虚空、六德、刹那、弹指、瞬息、须臾、逡巡、模糊、漠、渺、埃、尘、沙、纤、微、忽、丝、毫、厘、分、零、壹、贰、叁、肆、伍、陆、柒、捌、玖、分、角、圆、拾、佰、仟、萬、亿、兆、京、垓、秭、穰、沟、涧、正、载、极(10的四十八次方)
  8. Echo %~1|FindStr "^[0-9]*$">Nul || echo 非法输入!按任意键退出!&&PAUSE>NUL&&EXIT
  9. Set/a Q=02102452501
  10. SET RMB检测=
  11. SET RMB检测=%~1
  12. SET RMB窗口=
  13. SET RMB窗口=%~1
  14. SET 单位=圆
  15. :RMB位数
  16. SET RMB窗口=%RMB窗口:~1%
  17. Set/a RMB位数+=1
  18. Set/a 窗口长度=%窗口长度%+4
  19. IF NOT "%RMB窗口%"=="" GOTO,RMB位数
  20. If %窗口长度% Lss 15 Set 窗口长度=15
  21. Set/a 窗口长度=%窗口长度%+3
  22. Call,:Cnm 74 %窗口长度% 3
  23. ECHO.QQ:%Q%
  24. ECHO.输入:%~1
  25. :RMB循环
  26. SET/a RMB位数-=1
  27. CALL,:RMB转换 %RMB检测:~0,1% %RMB位数%
  28. SET RMB检测=%RMB检测:~1%
  29. IF NOT "%RMB检测%"=="" GOTO,RMB循环
  30. PAUSE>NUL
  31. EXIT
  32. :RMB转换
  33. IF "%~1"=="0" GOTO,RMB零
  34. IF "%~1"=="1" SET/P="壹"<NUL
  35. IF "%~1"=="2" SET/P="贰"<NUL
  36. IF "%~1"=="3" SET/P="叁"<NUL
  37. IF "%~1"=="4" SET/P="肆"<NUL
  38. IF "%~1"=="5" SET/P="伍"<NUL
  39. IF "%~1"=="6" SET/P="陆"<NUL
  40. IF "%~1"=="7" SET/P="柒"<NUL
  41. IF "%~1"=="8" SET/P="捌"<NUL
  42. IF "%~1"=="9" SET/P="玖"<NUL
  43. IF "%~2"=="51" SET/P="仟"<NUL
  44. IF "%~2"=="50" SET/P="佰"<NUL
  45. IF "%~2"=="49" SET/P="拾"<NUL
  46. IF "%~2"=="48" SET/P="极"<NUL
  47. IF "%~2"=="47" SET/P="仟"<NUL
  48. IF "%~2"=="46" SET/P="佰"<NUL
  49. IF "%~2"=="45" SET/P="拾"<NUL
  50. IF "%~2"=="44" SET/P="载"<NUL
  51. IF "%~2"=="43" SET/P="仟"<NUL
  52. IF "%~2"=="42" SET/P="佰"<NUL
  53. IF "%~2"=="41" SET/P="拾"<NUL
  54. IF "%~2"=="40" SET/P="正"<NUL
  55. IF "%~2"=="39" SET/P="仟"<NUL
  56. IF "%~2"=="38" SET/P="佰"<NUL
  57. IF "%~2"=="37" SET/P="拾"<NUL
  58. IF "%~2"=="36" SET/P="涧"<NUL
  59. IF "%~2"=="35" SET/P="仟"<NUL
  60. IF "%~2"=="34" SET/P="佰"<NUL
  61. IF "%~2"=="33" SET/P="拾"<NUL
  62. IF "%~2"=="32" SET/P="沟"<NUL
  63. IF "%~2"=="31" SET/P="仟"<NUL
  64. IF "%~2"=="30" SET/P="佰"<NUL
  65. IF "%~2"=="29" SET/P="拾"<NUL
  66. IF "%~2"=="28" SET/P="穰"<NUL
  67. IF "%~2"=="27" SET/P="仟"<NUL
  68. IF "%~2"=="26" SET/P="佰"<NUL
  69. IF "%~2"=="25" SET/P="拾"<NUL
  70. IF "%~2"=="24" SET/P="秭"<NUL
  71. IF "%~2"=="23" SET/P="仟"<NUL
  72. IF "%~2"=="22" SET/P="佰"<NUL
  73. IF "%~2"=="21" SET/P="拾"<NUL
  74. IF "%~2"=="20" SET/P="垓"<NUL
  75. IF "%~2"=="19" SET/P="仟"<NUL
  76. IF "%~2"=="18" SET/P="佰"<NUL
  77. IF "%~2"=="17" SET/P="拾"<NUL
  78. IF "%~2"=="16" SET/P="京"<NUL
  79. IF "%~2"=="15" SET/P="仟"<NUL
  80. IF "%~2"=="14" SET/P="佰"<NUL
  81. IF "%~2"=="13" SET/P="拾"<NUL
  82. IF "%~2"=="12" SET/P="兆"<NUL
  83. IF "%~2"=="11" SET/P="仟"<NUL
  84. IF "%~2"=="10" SET/P="佰"<NUL
  85. IF "%~2"=="9" SET/P="拾"<NUL
  86. IF "%~2"=="8" SET/P="亿"<NUL
  87. IF "%~2"=="7" SET/P="仟"<NUL
  88. IF "%~2"=="6" SET/P="佰"<NUL
  89. IF "%~2"=="5" SET/P="拾"<NUL
  90. IF "%~2"=="4" SET/P="萬"<NUL
  91. IF "%~2"=="3" SET/P="仟"<NUL
  92. IF "%~2"=="2" SET/P="佰"<NUL
  93. IF "%~2"=="1" SET/P="拾"<NUL
  94. IF "%~2"=="0" SET/P="%单位%"<NUL
  95. SET 零=0
  96. GOTO,:EOF
  97. :RMB零
  98. SET 后零=%RMB检测:~1,1%
  99. IF "%后零%"=="" SET 零=1
  100. IF "%~2"=="0" SET/P="%单位%"<NUL
  101. IF "%~2"=="4" SET/P="萬"<NUL&SET 零=4&GOTO,:EOF
  102. IF "%~2"=="8" SET/P="亿"<NUL&SET 零=8&GOTO,:EOF
  103. IF "%~2"=="12" SET/P="兆"<NUL&SET 零=12&GOTO,:EOF
  104. IF "%~2"=="16" SET/P="京"<NUL&SET 零=16&GOTO,:EOF
  105. IF "%~2"=="20" SET/P="垓"<NUL&SET 零=20&GOTO,:EOF
  106. IF "%~2"=="24" SET/P="秭"<NUL&SET 零=24&GOTO,:EOF
  107. IF "%~2"=="28" SET/P="穰"<NUL&SET 零=28&GOTO,:EOF
  108. IF "%~2"=="32" SET/P="沟"<NUL&SET 零=32&GOTO,:EOF
  109. IF "%~2"=="36" SET/P="涧"<NUL&SET 零=36&GOTO,:EOF
  110. IF "%~2"=="40" SET/P="正"<NUL&SET 零=40&GOTO,:EOF
  111. IF "%~2"=="44" SET/P="载"<NUL&SET 零=44&GOTO,:EOF
  112. IF "%~2"=="48" SET/P="极"<NUL&SET 零=48&GOTO,:EOF  
  113. IF "%零%"=="0" ( IF NOT "%后零%"=="0" SET/P="零"<NUL&SET 零=1 )
  114. GOTO,:EOF
  115. EXIT
  116. :CNM
  117. If Not "%~1"=="" Color %~1
  118. If Not "%~2"=="" MODE con: COLS=%~2
  119. If Not "%~3"=="" MODE con: LINES=%~3
  120. GOTO,:EOF
复制代码
原本还可以再改进一下加上小数点后两位的,角,分 ,,,但现社会都很少用 角和分了,且加上会再次加写判断过程,有点耗时,我也就懒得再后续完善了!
1

评分人数

    • fzp070: 收到,谢谢!技术 + 1

TOP

感谢楼上分享, 我用ai改powershell, 几十轮都不行? 哎, ai还是不行啊
  1. function Convert-RMB {
  2.     param (
  3.         [string]$input
  4.     )
  5.    
  6.     # 检查输入是否为数字
  7.     if (-not ($input -match '^[0-9]*$')) {
  8.         Write-Host "非法输入!"
  9.         return
  10.     }
  11.     $units = @('圆', '拾', '佰', '仟', '萬', '拾萬', '佰萬', '仟萬', '亿', '拾亿', '佰亿', '仟亿', '兆', '拾兆', '佰兆', '仟兆', '京', '拾京', '佰京', '仟京', '垓', '拾垓', '佰垓', '仟垓', '秭', '拾秭', '佰秭', '仟秭', '穰', '拾穰', '佰穰', '仟穰', '沟', '拾沟', '佰沟', '仟沟', '涧', '拾涧', '佰涧', '仟涧', '正', '拾正', '佰正', '仟正', '载', '拾载', '佰载', '仟载', '极')
  12.     $digits = @('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖')
  13.    
  14.     # 计算输入的长度
  15.     $length = $input.Length
  16.     $result = ""
  17.     for ($i = 0; $i -lt $length; $i++) {
  18.         $digit = [int]$input[$i]
  19.         $position = $length - $i - 1
  20.         $unit = if ($position -lt $units.Length) { $units[$position] } else { "" }
  21.         if ($digit -ne 0) {
  22.             $result += $digits[$digit] + $unit
  23.         } elseif ($unit -match '圆|萬|亿|兆|京|垓|秭|穰|沟|涧|正|载|极') {
  24.             $result += $unit
  25.         } elseif ($result -ne "" -and $result[-1] -ne '零') {
  26.             $result += '零'
  27.         }
  28.     }
  29.     $result = $result -replace '零+', '零'
  30.     $result = $result -replace '零$', ''
  31.     $result = $result -replace '零圆$', '圆'
  32.     return $result
  33. }
  34. # 测试
  35. $input = Read-Host "输入一个数字"
  36. $result = Convert-RMB -input $input
  37. Write-Host "输入:" $input
  38. Write-Host "输出:" $result
复制代码

TOP

返回列表