早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求bat随机数范围内生成,每个随机数之前都有一个字母的代码RT,我想生成8个随机数.其中4个为w1,w3,w5,w7,前面一个字母都是f,范围是1~21.还有4个为w2,w4,w6,w8,前面一个字母都是y,范围是1~5.接着问一

题目详情
求bat随机数范围内生成,每个随机数之前都有一个字母的代码
RT,我想生成8个随机数.其中4个为w1,w3,w5,w7,前面一个字母都是f,范围是1~21.还有4个为w2,w4,w6,w8,前面一个字母都是y,范围是1~5.
接着问一下:怎么把这些变量输出到一个记事本里?
这是我写的代码总是报错:
set /a w1="f%random%%%(21-1)+(1+1)"
set /a w2="y%random%%%(5-1)+(1+1)"
set /a w3="f%random%%%(21-1)+(1+1)"
set /a w4="y%random%%%(5-1)+(1+1)"
set /a w5="f%random%%%(21-1)+(1+1)"
set /a w6="y%random%%%(5-1)+(1+1)"
set /a w7="f%random%%%(21-1)+(1+1)"
set /a w8="y%random%%%(5-1)+(1+1)"
cd.>>1.txt
for /l %%a in (1,1,8) do echo !w%%a!>1.txt
望求大神指教,系统为Windows8.1.
▼优质解答
答案和解析

你的代码存在的问题:

没有开启本地环境变量延迟扩展,但是用了!来扩展变量

set /a的运算中不应该出现字母,除非是十六进制的运算

>表示覆盖,所以输出了8次,但最终记事本里只有一个结果

优化后的代码,用for循环

@Echo Off
SetLocal EnableDelayedExpansion
::CODE BY aiwozhonghuaba POWERD BY iBAT 1.6
For /l %%i In (1 1 8) Do (
Set /A Jud=%%i %% 2
Set /A w%%i=!Random! %% 21 + 1
IF "!Jud!" EQU "1" (
Set w%%i=f!w%%i!
) ELSE (
Set w%%i=y!w%%i!
)
Echo !w%%i!>>test.txt
)