我这里的代码只是尝试创建一个名称从随机数组中选择的文件。为什么输出不正确?
代码:
@echo off
set i=0
for %%a in (Cow Dog Bird Fish Meerkat Cat) do (
set /A i+=1
set operator[!i!]=%%a
)
set /a operator=%random%%%4+1
set operator=!operator[%operator%]!
copy /y NUL %operator%>NUL
创建的文件标题为!operator[3]!
,而不是数组中的一个字符串。为什么会这样?任何帮助表示赞赏!
答案 0 :(得分:2)
Alex K在评论中发现了您的主要问题 - 您遗失了setlocal enableDelayedExpansion
。
但是你有另一个问题 - 你的数组包含6个值,但是你随机选择1到4之间的索引而不是1到6之间的索引。
您应该使用set /a operator=%random%%%i+1
。请注意,与SET / A一起使用时,不需要扩展真实的环境变量。