我有一个适用于 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 以生成所需的字符串列表。
为了使用
!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
也可以使用,可能在迭代由其他代码构建的列表的循环中。