Board logo

标题: [其他] 批处理将当前数字日期转为中文小写数字日期 [打印本页]

作者: youxi01    时间: 2008-1-9 23:33     标题: 批处理将当前数字日期转为中文小写数字日期

本帖最后由 pcl_test 于 2017-6-22 17:54 编辑

比如:2008-1-9
转为:二零零八年一月九日
作者: 随风    时间: 2008-1-10 00:44

:
  1. @echo off&setlocal enabledelayedexpansion
  2. :: 把日期转换成大写
  3. set var=2008-11-20
  4. echo %var%
  5. set str=一 二 三 四 五 六 七 八 九
  6. for /f "tokens=1-3 delims=-" %%a in ("%var%") do (
  7.   set /a y=%%a,d=%%b,m=%%c
  8. )
  9. set y=%y:0=零%
  10. if %d% geq 10 set d=%d:~0,1%十%d:~-1%
  11. if %m% geq 10 set m=%m:~0,1%十%m:~-1%
  12. set var=%y%年%d%月%m%日
  13. for %%i in (%str%) do (
  14.   set /a num+=1
  15.   call set var=%%var:!num!=%%i%%
  16. )
  17. set var=%var:0=%
  18. echo %var%
  19. pause
复制代码

作者: youxi01    时间: 2008-1-10 07:45

你日期这里的分割符怎么只有
delims=-了呢?
其它的呢?delims=-\. 呢?
作者: 随风    时间: 2008-1-10 13:20

原帖由 youxi01 于 2008-1-10 07:45 发表
你日期这里的分割符怎么只有
delims=-了呢?
其它的呢?delims=-\. 呢?


这倒不是问题,关键是感觉替换过程,不够简洁,重复的太多,看谁能简化一下,或是出更好的代码.

期待....
作者: foxJL    时间: 2008-1-10 23:38

简化谈不上,照你的改了一点点.期待更好的代码
  1. @echo off&setlocal enabledelayedexpansion
  2. :: 把日期转换成大写
  3. set str=零一二三四五六七八九
  4. for /f "tokens=1-3 delims=-" %%a in ("%date:~0,-4%") do (
  5.   set /a y=%%a,d=%%b,m=%%c)
  6. for %%i in (d,m) do (if !%%i! geq 10 set %%i=!%%i:~0,1!十!%%i:~-1!
  7. set %%i=!%%i:0=!
  8. )
  9. set var=%y%年%d%月%m%日
  10. for /l %%i in (0,1,9) do (call set var=%%var:%%i=!str:~%%i,1!%%)
  11. echo %var%
  12. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2