标题: [系统相关] [已解决]批处理命令random有个特殊的方法 [打印本页]
作者: 小文 时间: 2015-3-5 15:53 标题: [已解决]批处理命令random有个特殊的方法
::A- @echo off
- set /a sj= %random%%%9+1
- echo 本次运行%sj%.vbs&pause
- start %sj%.vbs
复制代码
::B- @echo off
- setlocal enabledelayedexpansion
- set min=1
- set max=10
- set /a mod=!max!-!min!+1
- set /a r=!random!%%!mod!+!min!
- ……
复制代码
我想问下上面两个random有什么不同的地方?B我还大概可以理解,A我就不知道是怎样的道理了,A有什么猫腻?规律?用法??
作者: CrLf 时间: 2015-3-5 15:58
回复 1# 小文
其实是一回事,都是取范围内的随机数
作者: 小文 时间: 2015-3-5 16:05
回复 2# CrLf
非常感谢你的回答,但你这样的回答好像是白白浪费你的精力的……你懂的。对了起,我是新手,我不理解%random%%%9+1应该怎样修改。9+1是什么意思呢?在这里我知道可以随机运行1-9的文件,但如果是10-90呢?比如把9+1改成9+5并不是随机运行5-9之间的文件。好像是5-(9+5)之间的。
作者: pcl_test 时间: 2015-3-5 16:05
回复 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
回复 4# pcl_test
为什么random/?查不到呢?它属于什么东东叫经?那像这类不能在cmd elp里查的东西是不是只能在网上找?有没有具体一点的书……也有那些cmd help里没有的命令及用法。
已经很感谢你的解答了, set /a a=%random% %% (m +1)刚刚试了一下,(m+0)也是可以的,运行0-m的文件,谢谢你,受教了!
作者: pcl_test 时间: 2015-3-5 16:18
回复 5# 小文
是个变量,不是命令,echo %random%就会返回一个随机数
作者: CrLf 时间: 2015-3-5 16:20
回复 5# 小文
random 属于动态环境变量,见 set /? 的最后一页
要注意的是,只有不存在同名的“静态”环境变量时,动态环境变量才会生效,比如:- echo %random%
- echo %random%
- ::现在是动态的
-
- set random=哎哟朕卡住了
- echo %random%
- echo %random%
- ::现在是静态的
-
- set "random="
- echo %random%
- echo %random%
- ::现在又是动态的
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |