批处理文件 - 如何获取具有可变索引的数组的值?

时间:2018-04-03 14:46:00

标签: arrays batch-file indexing

我试图在批处理文件中使用数组中的值设置变量,但到目前为止似乎没有解决方案。这是一个情况的片段:

:: random value
set ParId=123

:: get the last number of the previous value
set /a "temp0=%ParId% %% 10"

:: part of my array, just for the example
set AsciiNumTable[0]=0x30
set AsciiNumTable[1]=0x31
set AsciiNumTable[2]=0x32
set AsciiNumTable[3]=0x33
set AsciiNumTable[4]=0x34
set AsciiNumTable[5]=0x35
set AsciiNumTable[6]=0x36
set AsciiNumTable[7]=0x37
set AsciiNumTable[8]=0x38
set AsciiNumTable[9]=0x39

:: PART NOT WORKING
set ParIdByte0=AsciiNumTable[%temp0%]

我尝试了不同的方法:

call set ParIdByte0=%AsciiNumTable[!tempId5!]%

但它们也不起作用。

如果我输出数组和临时变量,它们看起来很好,所以我不知道为什么我无法从数组中获取值。

2 个答案:

答案 0 :(得分:0)

"不工作"毫无意义。请说明您的期望和实际发生的事情。

尝试

call set ParIdByte0=%%AsciiNumTable[%temp0%]%%

答案 1 :(得分:0)

可以通过您正在尝试的反向方法(使用延迟扩展)来完成。尽管您的脚本存在更多问题1)在为app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS'); next(); }); 分配值时缺少set关键字2){{1} } value将为ParId,并且数组中没有第三个元素:

temp0