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

[其他] 批处理将当前数字日期转为中文小写数字日期

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

比如:2008-1-9
转为:二零零八年一月九日

简化谈不上,照你的改了一点点.期待更好的代码
  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
复制代码
1

评分人数

TOP

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


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

期待....
技术问题请到论坛发帖求助!

TOP

你日期这里的分割符怎么只有
delims=-了呢?
其它的呢?delims=-\. 呢?

TOP

:
  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
复制代码
1

评分人数

技术问题请到论坛发帖求助!

TOP

返回列表