作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在批处理文件中有一个数组,我想在每次迭代中获取 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/
我是一名优秀的程序员,十分优秀!