使用数组更改命令中的多个变量

问题描述 投票:0回答:1

我有一个适用于 DOFRI(数据库、对象、字段、记录、索引)模型的内联命令。我想使用多个数组同时迭代和更改命令中的多个参数

在线 DOFRI 命令

"updatesysdb 11 15 88 545112 0"

我想在每次迭代中使用我的参数列表更改记录 (545112) 和索引 (0) 参数。其他一切(“updatesysdb 11 15 88”)可以保持不变。

“updatesysdb 11 15 88 %p %q”

其中 %p 是我的记录数组中的每个值 其中 %q 是我的索引数组中的每个值

我的阵列

set MMU_Mv_Records=155655 155656 155657 155658
set MMU_Mv_Indexes=1500 900 1100 300

这是我到目前为止所能想到的,但无法让它打印所需的输出来测试理论。

@echo off
set MMU_Mw_Records=155655 155656 155657 155658
set MMU_Mw_Indexes=1500 900 1100 300
(for %%p in (%MMU_Mw_Records%) do (
echo DBSET 32 10 15 155655 = %%p
ping 127.0.0.1 -n 1 -w 500> nul)
)

所需输出

"updatesysdb 11 15 88 155655 1500" 
"updatesysdb 11 15 88 155656 900"
"updatesysdb 11 15 88 155657 1100" 
"updatesysdb 11 15 88 155658 300"

我不确定在哪里添加 MMU_Mw_Indexes 和 MMU_Mw_Records 以生成所需的字符串列表。

arrays batch-file
1个回答
0
投票

为了使用

!var!
设施,您需要一条线路

setlocal enabledelayedexpansion enableextensions

通常,它直接包含在

@echo off
行之后。默认情况下,扩展处于启用状态,因此
enableextensions
通常是可选的(并且被省略)。

您的代码,按照目前的情况,设置

array[!i!]
array[!s!]
(字面意思),并重复将相应列表中的值分配给变量,因此
array[!i!]
将包含列表的 最后一项 的值(显然,冲洗并重复
array[!s!]

你没有具体说明你的申请是什么,但我建议

@echo off
setlocal
:again
if "%1"=="" goto done
echo updatesysdb 11 15 88 %1 %2
shift&shift&goto again
:done

然后执行

本批次 155655 0 155656 1

产生您建议的输出。

请注意,在合理范围内,数字对可以根据需要重复多次,或者在线条中重复

call thisbatch 155655 0

也可以使用,可能在迭代由其他代码构建的列表的循环中。

© www.soinside.com 2019 - 2024. All rights reserved.