为什么我的批处理文件会回显数组名称和数字而不是字符串?

时间:2018-03-21 15:39:58

标签: arrays batch-file random

我这里的代码只是尝试创建一个名称从随机数组中选择的文件。为什么输出不正确?

代码:

@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]!,而不是数组中的一个字符串。为什么会这样?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

Alex K在评论中发现了您的主要问题 - 您遗失了setlocal enableDelayedExpansion

但是你有另一个问题 - 你的数组包含6个值,但是你随机选择1到4之间的索引而不是1到6之间的索引。

您应该使用set /a operator=%random%%%i+1。请注意,与SET / A一起使用时,不需要扩展真实的环境变量。