[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
不知道%date%所扩展出的日期的格式吗?
如果是 2008-01-01那怎么01是mm还是dd呢

TOP

原帖由 pusofalse 于 2008-10-21 20:24 发表
未知%date%的格式。

第一个01当然是mm,第二个当然是dd。
如果是2008-01-01、2000-12-12这样的日期,输入mmddyyyy虽然同ddmmyyyy是一样的结果,都是01012008、12122000,但第一个01确实是月份。ddmmyyyy格式的01 ...

还是有疑惑的
我的意思的 如果 %date%的值是 2008-01-01 那么两个01要自己判断哪个是DD 哪个是MM  是这样吗?
也可以这样说 2008-01-01 第一个01 可以是 dd 也可以是mm 因为各电脑的日期格式不一,所以要代码自己判断了
这样理解对吗

TOP

用个临时文件取日期
  1. @echo off
  2. set n=-1&set m=+1
  3. echo wscript.echo date>tmp.vbs
  4. for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo tmp.vbs^&del tmp.vbs') do set "ymda=10%%k 10%%i 10%%j"
  5. :lp
  6. echo wscript.echo dateadd("d",%n%,date)>tmp.vbs
  7. for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo tmp.vbs^&del tmp.vbs') do set "ymdb=10%%k 10%%i 10%%j"
  8. for  %%i in (%ymda%) do set %%i=%%i
  9. for  %%i in (%ymdb%) do if %%i gtr 1031 (set yyyy=%%i)else (
  10. if not defined %%i (set/a dd=%%i%m%,t+=2)else set mm=%%i)
  11. )
  12. if %t% gtr 3 set n=+1&set t=&set m=-1&goto lp
  13.    set yyyy=%yyyy:~-4%
  14.    set mm=%mm:~-2%
  15.    set dd=%dd:~-2%
  16.    set .y=%yyyy%
  17.    set .m=%mm%
  18.    set .d=%dd%
  19.    set/p str=请输入:
  20.    setlocal enabledelayedexpansion
  21. :lp1
  22.    set v=!str:~,1!
  23.      if not defined .%v% (
  24.        if not defined var (set var=!v!)else set var=!var!!v!
  25.         ) else (
  26.           call set var=!var!%%.%v%:~!_%v%!,1%%
  27.           set/a _!v!+=1
  28. )
  29. set str=!str:~1!
  30. if defined str goto lp1
  31. echo !var!
  32. pause
复制代码
1

评分人数

    • pusofalse: 精品,如果是用纯批解决就更完美了。PB + 8

TOP

这个问题用纯P 有点复杂了
因为毕竟要考虑日期格式的全面性 虽然有的格式并不会出现
就象 我开始问的  2008-01-03 也可以说是一月三号  也可以理解三月一号
我上面的代码 就是取得当天日期的前一天或后一天 有变化的判断为日
判断YYYY的方法是大于4位 余下是年
期待完善版本了

TOP

恩  可以试 DATE 改
不知道这样行得通否?
  1. 发现有错误  修改
复制代码

[ 本帖最后由 terse 于 2008-10-22 02:26 编辑 ]

TOP

返回列表