gpt4 book ai didi

batch-file - 如何在批处理脚本的 FOR 循环中处理元素 i+1?

转载 作者:行者123 更新时间:2023-12-03 21:09:00 31 4
gpt4 key购买 nike

我在批处理文件中有一个数组,我想在每次迭代中获取 i 元素和 i+1(在我的批处理中调用 serialNumberSection ), 从输入的第二个位置开始。到目前为止,我已经能够获取 i 元素,但我无法对 i+1 执行同样的操作,我不明白为什么。

我做错了什么?

input array = [0x33333 0xAA 0x33323130 0xBB 0x37363534 0xCC
0x42413938 0xDD 0x46454443]

我的代码

set argCount=0
for %%x in (%*) do (
set /A argCount+=1
set "argVec[!argCount!]=%%~x"
)
echo Number of processed arguments: %argCount%

set serialNumberSection=2
for /L %%i in (2,2,%argCount%) do (
echo %%i- "!argVec[%%i]!"
set /A serialNumberSection+=1
echo %%serialNumberSection !argVec[%%serialNumberSection]!
)

我的输出

Number of processed arguments: 9
2- "0xAA"
%serialNumberSection <=Expected: 0x33323130
4- "0xBB"
%serialNumberSection <=Expected: 0x37363534
6- "0xCC"
%serialNumberSection <=Expected: 0x42413938
8- "0xDD"
%serialNumberSection <=Expected: 0x46454443

最佳答案

代替行:

echo %%serialNumberSection !argVec[%%serialNumberSection]!

使用其中之一:

call echo !serialNumberSection! %%argVec[!serialNumberSection!]%%

或:

for %%j in (!serialNumberSection!) do echo %%j !argVec[%%j]!

%%serialNumberSection 是错误的语法,因为前缀 %% 只对 for 变量引用有效(比如你的 % %i),但是 serialNumberSection 是一个普通的环境变量。

%serialNumberSection% 不起作用,因为您正在更新循环内的变量。

!serialNumberSection! 有效,但不能扩展您的数组元素,因为延迟扩展不能嵌套(因此 !argVec[!serialNumberSection!]! 在尝试时失败展开变量 argVec[],并且 serialNumberSection 被视为文字字符串),因此您需要解决这个问题。

另请引用这篇文章:

关于batch-file - 如何在批处理脚本的 FOR 循环中处理元素 i+1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50907358/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com