[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
感谢版主大人的回复,第一段代码 可以实现生成顺序的时间 但不是随机的

TOP

本帖最后由 pcl_test 于 2016-12-2 08:55 编辑

上班可提早,下班常延迟,在指定时间段内产生跟人数等量的不重复时间点再随机与ID和人名组合
7:30-8:30相差60分钟,60*60-2=3598秒,假设有50人,则每间隔3598/50≈71秒打一次卡
  1. @echo off&setlocal enabledelayedexpansion
  2. set t=07:30:00
  3. for /l %%i in (1 1 50) do (
  4.     set r=71
  5.     for /f "tokens=1-3 delims=:" %%a in ("!t!") do (
  6.         set /a h=1%%a-100,m=1%%b-100,s=1%%c-100
  7.         for %%d in (s m h) do (
  8.             set /a "v=%%d,%%d=(%%d+r)%%60,r=(v+r)/60"
  9.         )
  10.        set /a h=100+h,m=100+m,s=100+s
  11.        set t=!h:~-2!:!m:~-2!:!s:~-2!
  12.        echo;!t!
  13.     )
  14. )
  15. pause
复制代码
  1. @echo off
  2. rem win7及以上系统运行
  3. for /f "delims=" %%a in ('more +7 "%~f0"') do call set "list=%%list%%%%a;"
  4. set start=11:30
  5. set end=12:30
  6. powershell -c "$list=@{%list%};$len=$list.count;$array=Get-Random (1..$len) -count $len;$a=(New-TimeSpan %start% -end %end%).TotalSeconds;$t=(Get-Date %start%);$r=0;while($r -le ($len-1)){'time=\"{0}\" id=\"{1}\" name=\"{2}\"' -f $t.ToString('yyyy-MM-dd HH:mm:ss'),$array[$r],$list[$array[$r]];$r++;$t=(Get-Date $t).AddSeconds((Get-Random -min ([int](($a-2)/$len/2)) -max ([int](($a-2)/$len))))}"
  7. pause&exit
  8. 1='陈一'
  9. 2='黄二'
  10. 3='张三'
  11. 4='李四'
  12. 5='王五'
  13. 6='赵六'
  14. 7='钱七'
  15. 8='孙八'
  16. 9='杨九'
  17. 10='吴十'
复制代码

TOP

本帖最后由 pcl_test 于 2016-12-1 20:26 编辑

在论坛找了一下  人员随机问题可以解决
区间随机时间顺序问题还不知如何下手
http://www.bathome.net/redirect. ... 2814&ptid=20850

TOP

返回列表