[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

::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有什么猫腻?规律?用法??

回复 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. ::现在又是动态的
复制代码

TOP

回复 5# 小文
是个变量,不是命令,echo %random%就会返回一个随机数

TOP

回复 4# pcl_test


    为什么random/?查不到呢?它属于什么东东叫经?那像这类不能在cmd elp里查的东西是不是只能在网上找?有没有具体一点的书……也有那些cmd help里没有的命令及用法。
已经很感谢你的解答了, set /a a=%random% %% (m +1)刚刚试了一下,(m+0)也是可以的,运行0-m的文件,谢谢你,受教了!

TOP

回复 1# 小文

random是一个动态环境变量,用于返回一个0~32767 之间的随机整数,获取指定范围内的随机整数
要获取[0,m]之间的整数: set /a a=%random% %% (m +1)
要获取[m,n]之间的整数: set /a a= m+%random% %% (m-n +1) 
要对数字进行数学运算,须使用set /a命令

TOP

回复 2# CrLf


    非常感谢你的回答,但你这样的回答好像是白白浪费你的精力的……你懂的。对了起,我是新手,我不理解%random%%%9+1应该怎样修改。9+1是什么意思呢?在这里我知道可以随机运行1-9的文件,但如果是10-90呢?比如把9+1改成9+5并不是随机运行5-9之间的文件。好像是5-(9+5)之间的。

TOP

回复 1# 小文


    其实是一回事,都是取范围内的随机数

TOP

返回列表