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

[文本处理] 求批处理每次打开bat自动用4位随机数替换

  1. @echo off
  2. cls
  3. :start
  4. echo 7022
  5. pause
  6. goto :next
  7. :next
  8. echo 7022
  9. pause
复制代码
我想实现的是每次打开上述bat时,都可以自动用一个4位随机数替换两处“7022”.这怎么弄?求教!!而且上述bat我会把它转换为.exe运行,还想要有自动替换的功能

回复 1# crazy014
这样可以吗?
  1. @Echo Off
  2. Cls
  3. :Start
  4. %= 下面一行代码产生一个小于 9000 的随机数,并加上 1000,就是任意的四位数 =%
  5. Set /A "Rand=1000+%Random%%%9000"
  6. Echo.%Rand%
  7. Pause
  8. @Goto :Next
  9. :Next
  10. Echo.%Rand%
  11. Pause
复制代码
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

我去试试,谢谢你

TOP

回复 3# crazy014
不客气!
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 4# HOPE2021

我不断打开关闭,为什么显示的都是相近的数,还有点规律...这个是停顿了两三次
17:00:32.52
1539
17:00:35.18
1549
17:00:37.41
1555
17:00:39.34
1562
17:00:41.35
1568
17:00:55.24
1614
17:00:57.46
1621
17:00:59.51
1627
17:01:01.89
1634
17:01:34.02
1738
17:01:36.01
1745
17:01:38.29
1754
17:01:40.39
1761
bat小白,请多指教!谢谢!

TOP

回复 4# HOPE2021

好像和代码没关系,电脑产生的随机数就是这样?我单独一个  echo %Random%  也是相近的
bat小白,请多指教!谢谢!

TOP

回复 6# 77七
%Random%是根据时间来生成随机数的,所以在短时间内会很相近
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 6# 77七
如果利用变量延迟的特性,叠加取平均值,效果会更好,如:
  1. @Echo Off
  2. Cls
  3. :Start
  4. %= 下面一行代码产生三个小于 3000 的随机数,并加上 1000,就是任意的四位数 =%
  5. Set /A "Rand=1000+%Random%%%3000+%Random%%%3000+%Random%%%3000"
  6. Echo.%Rand%
  7. Pause
  8. @Goto :Next
  9. :Next
  10. Echo.%Rand%
  11. Pause
复制代码
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 7# HOPE2021

但是在一个批处理里面设置一个循环,生成很多个随机数,又是真随机了;如果多次点开批处理,只生成一个,又是相近的,好神奇。
bat小白,请多指教!谢谢!

TOP

回复 9# 77七
大多数编程语言的随机数生成都是先取一个数据(如时间),然后每次取随机数都是在上一次的基础上进行运算,差别就很大了
Why join the navy, if you can be a pirate? - Steve Jobs

TOP

回复 10# HOPE2021
  1. Set /A "Rand=1000+%Random%%%9000"
复制代码
这个写两行,也解决了
bat小白,请多指教!谢谢!

TOP

回复 5# 77七
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :Loop
  4. set /a "rand=1000+!random!%%9000"
  5. echo,%rand%
  6. pause
  7. goto :Loop
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12# Batcher

大佬,我试了,如果不断打开关闭,结果还是一样,产生的都是相近的数字
12:16:41.74
4461
12:16:46.10
4477
12:16:48.19
4484
12:16:50.20
4490
12:16:52.05
4497
12:16:53.99
4500

按实际使用场景,是不用每次打开关闭的。
但是理论上不断打开、关闭批处理,如何避免产生相近数字呢?
bat小白,请多指教!谢谢!

TOP

先平方再取后四位

QQ 20147578

TOP

本帖最后由 77七 于 2023-1-1 12:57 编辑

回复 14# czjt1234
这样随机的范围应该变小了吧?比如我随机这个数目的是看尾数是不是3?包括上面的答案,范围也都是缩小了的,1000以内的 就产生不了,比如这四位数是一万个人的工号,从0000-9999,也不符合实际场景了
bat小白,请多指教!谢谢!

TOP

返回列表