[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
我觉得至少应该对日期格式和返回方式应该有所要求吧

因为要求比较粗所以钻个空字
随机的年、随机的月、随机的日
加起来就是随机的日期了吧
不用管什么日期计算了
为了避免非法日期
所以舍弃了日的29、30、31这些日数
反正也没有一定要求有这些日
  1. @echo off
  2. for /l %%i in (1,1,100) do call :随机日期
  3. goto :eof
  4. :随机日期
  5. set /a 随机年=%random% %% 10 + 2000
  6. set /a 随机月=%random% %% 12 + 1
  7. set /a 随机日=%random% %% 28 + 1
  8. set 随机日期=%随机年%-%随机月%-%随机日%
  9. echo.%随机日期%
复制代码
1

评分人数

    • batman: 参与了就是好的PB + 5

TOP

neorobin的思路太飘
看的我有点想飞起来


再我贴一个守规矩的
至于call和for的问题
满足要求就好
不需要太苛刻吧
主要是我觉得这种形式看着舒服 :-P
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /l %%i in (1,1,100) do (
  3.     call :随机日期 2000 10
  4.     echo.!随机日期!
  5. )
  6. goto :eof
  7. :随机日期 - 参数说明: %1 日期起始年份 %2 日期总年数
  8. set /a 随机年=%random% %% %2 + %1
  9. set /a 随机月=%random% %% 12 + 1
  10. set /a 随机日=%random% %% 31 + 1
  11. if 1%随机日% equ 131 (
  12.     for %%m in (2 4 6 9 11) do if 1%随机月% equ 1%%m goto :随机日期
  13. )
  14. if 1%随机月% equ 12 (
  15.     set /a "二月最大日=28+(^!(随机年 %% 4) & ^!(^!(随机年 %% 100)) | ^!(随机年 %% 400))"
  16.     if !随机日! gtr !二月最大日! goto :随机日期
  17. )
  18. endlocal & set 随机日期=%随机年%-%随机月%-%随机日%
复制代码

[ 本帖最后由 qzwqzw 于 2009-12-31 15:21 编辑 ]
1

评分人数

    • batman: 逻辑运算用得好!PB + 5

TOP

neorobin的思路有“漏洞”
闰年的2月1日没办法生成

TOP

感觉减掉if对效率的提升不大
对可读性的降低倒是明显的
不过还是写了一个免if的版本
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /l %%i in (1,1,100) do (
  3.     call :随机日期 2000 10
  4.     set/p=!随机日期!      <nul
  5. )
  6. goto :eof
  7. :随机日期 - 参数说明: %1 日期起始年份 %2 日期总年数
  8. for %%s in (1 3 5 7 8 10 12) do set days#%%s=31
  9. for %%s in (4 6 9 11) do set days#%%s=30
  10. set /a 随机年=%random% %% %2 + %1
  11. set /a days#2="28+(^!(随机年 %% 4) & ^!(^!(随机年 %% 100)) | ^!(随机年 %% 400))"
  12. set /a 随机月=%random% %% 12 + 1
  13. set /a 随机日=%random% %% days#%随机月% + 1
  14. set 随机月=0%随机月%&set 随机日=0%随机日%
  15. endlocal & set 随机日期=%随机年%-%随机月:~-2%-%随机日:~-2%
复制代码
1

评分人数

TOP

嗯,你说的对
逻辑运算的拐的弯比if判断要多

另外晒晒我的想法
要不是太苛刻的场合
我喜欢用我沙发上的代码
否则我喜欢找个第三方exe做个随机加法
有人用vbs加减我也不反对

TOP

返回列表