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

[文本处理] 批处理随机数很不稳定?

@echo off
setlocal ENABLEDELAYEDEXPANSION

color 02
:abc


set /a a=%random%%%7
set /a b=%random%%%22
set c="&echo. "
for /l %%a in ( 1 1 %b% ) do set c=&echo. !c!

set /a d=%random%%%65
for /l %%a in ( 1 1 %d% ) do set ko= !ko!
::随机位置

set a=%a:0=日%
set a=%a:1=一%
set a=%a:2=二%
set a=%a:3=三%
set a=%a:4=四%
set a=%a:5=五%
set a=%a:6=六%
echo %c%%ko%今天星期%a%
::显示星期


set colo=0123456789abcdef

set /a x=%random%%%16
set /a y=%random%%%16
color !colo:~%x%,1!!colo:~%y%,1!
::选择颜色

set a=0
set b=0
set c=0
set d=0
ping 127.1 -n 2 >nul
cls
goto abc

我在这段代码里设随机换行为22以内,随机空格为65以内,不过在运行时却发现产生的随机数能很轻易地突破这一限制。请问这是什么原因呢?

回标签 的时候 清变量没?

TOP

谢谢楼上回答。经过修改,问题解决了一半,即产生的随机数是稳定了,但左上角时不时会出来"&echo. "或"ECHO处于关闭状态"

@echo off
color 02

:abc
setlocal ENABLEDELAYEDEXPANSION

set /a a=%random%%%7
set /a b=%random%%%22
set c="&echo. "
for /l %%a in ( 1 1 %b% ) do set c=&echo. !c!

set /a d=%random%%%65
for /l %%a in ( 1 1 %d% ) do set ko= !ko!
::随机位置

set a=%a:0=日%
set a=%a:1=一%
set a=%a:2=二%
set a=%a:3=三%
set a=%a:4=四%
set a=%a:5=五%
set a=%a:6=六%
echo %c%%ko%今天星期%a%
::显示星期

set colo=0123456789abcdef
set /a x=%random%%%16
set /a y=%random%%%16
color !colo:~%x%,1!!colo:~%y%,1!
::选择颜色

ping 127.1 -n 2 >nul
cls
endlocal
::这里增加了关闭变量延迟的命令
goto abc

TOP

TOP

返回列表