找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27108|回复: 6

[系统相关] [已解决]批处理命令random有个特殊的方法

[复制链接]
发表于 2015-3-5 15:53:52 | 显示全部楼层 |阅读模式
::A
  1. @echo off
  2. set /a sj= %random%%%9+1
  3. echo 本次运行%sj%.vbs&pause
  4. start %sj%.vbs
复制代码
::B
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set min=1
  4. set max=10
  5. set /a mod=!max!-!min!+1
  6. set /a r=!random!%%!mod!+!min!
  7. ……
复制代码
我想问下上面两个random有什么不同的地方?B我还大概可以理解,A我就不知道是怎样的道理了,A有什么猫腻?规律?用法??
发表于 2015-3-5 15:58:31 | 显示全部楼层
回复 1# 小文


    其实是一回事,都是取范围内的随机数
 楼主| 发表于 2015-3-5 16:05:38 | 显示全部楼层
回复 2# CrLf


    非常感谢你的回答,但你这样的回答好像是白白浪费你的精力的……你懂的。对了起,我是新手,我不理解%random%%%9+1应该怎样修改。9+1是什么意思呢?在这里我知道可以随机运行1-9的文件,但如果是10-90呢?比如把9+1改成9+5并不是随机运行5-9之间的文件。好像是5-(9+5)之间的。
发表于 2015-3-5 16:05:40 | 显示全部楼层
回复 1# 小文

random是一个动态环境变量,用于返回一个0~32767 之间的随机整数,获取指定范围内的随机整数
要获取[0,m]之间的整数: set /a a=%random% %% (m +1)
要获取[m,n]之间的整数: set /a a= m+%random% %% (m-n +1) 
要对数字进行数学运算,须使用set /a命令
 楼主| 发表于 2015-3-5 16:15:25 | 显示全部楼层
回复 4# pcl_test


    为什么random/?查不到呢?它属于什么东东叫经?那像这类不能在cmd elp里查的东西是不是只能在网上找?有没有具体一点的书……也有那些cmd help里没有的命令及用法。
已经很感谢你的解答了, set /a a=%random% %% (m +1)刚刚试了一下,(m+0)也是可以的,运行0-m的文件,谢谢你,受教了!
发表于 2015-3-5 16:18:50 | 显示全部楼层
回复 5# 小文
是个变量,不是命令,echo %random%就会返回一个随机数
发表于 2015-3-5 16:20:44 | 显示全部楼层
回复 5# 小文


    random 属于动态环境变量,见 set /? 的最后一页
    要注意的是,只有不存在同名的“静态”环境变量时,动态环境变量才会生效,比如:
  1. echo %random%
  2. echo %random%
  3. ::现在是动态的

  4. set random=哎哟朕卡住了
  5. echo %random%
  6. echo %random%
  7. ::现在是静态的

  8. set "random="
  9. echo %random%
  10. echo %random%
  11. ::现在又是动态的
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:12 , Processed in 0.009037 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表