1、数组对象
@echo off
set objLength=2
set obj[0].name=test1
set obj[0].password=1234
set obj[1].name=test2
set obj[1].password=9876
set objIndex=0
:loopStart
if %objIndex% equ %objLength% goto end
set objCurrent.name=0
set objCurrent.password=0
for /f "usebackq delims==. tokens=1-3" %%i in (`set obj[%objIndex%]`) do (
set objCurrent.%%j=%%k
echo 第一个=%%i
echo 第二个=%%j
echo 第三个=%%k
)
echo name=%objCurrent.name%
echo password=%objCurrent.password%
set /a objIndex=%objIndex% + 1
goto loopStart
:end
pause
解析:
@echo off
::规定数组长度
set objLength=2
::给数组设值
set obj[0].name=test1
set obj[0].password=1234
set obj[1].name=test2
set obj[1].password=9876
::初始索引
set objIndex=0
::循环
:loopStart
::判断索引值是否大于数组长度,大于的话跳到结束,不大于的话继续循环
if %objIndex% equ %objLength% goto end
::初始化变量
set objCurrent.name=0
set objCurrent.password=0
::这个循环是数组对象处理循环,就是处理单个对象。/f是参数格式 usebackq声明路径有空格
::delims==.是以=和.切割字符串,tokens=1-3是取切割后字符串的前1到3个,%%i表示第一个字符串【比如:obj[0]】,%%j表示第二个字符串【比如:password】,%%k表示第三个字符串【比如:1234】,`set obj[%objIndex%]`和/f取到字符串【比如:obj[0].password=1234】
for /f "usebackq delims==. tokens=1-3" %%i in (`set obj[%objIndex%]`) do (
:: 赋值变量
set objCurrent.%%j=%%k
echo 第一个=%%i
echo 第二个=%%j
echo 第三个=%%k
)
echo name=%objCurrent.name%
echo password=%objCurrent.password%
::索引+1
set /a objIndex=%objIndex% + 1
::继续循环
goto loopStart
:end
pause
2、简单数组
@echo off
::规定数组长度
set objLength=3
::给数组设值
set obj[0]=test1
set obj[1]=test2
set obj[2]=9876
::初始索引
set objIndex=0
::循环
:loopStart
::判断索引值是否大于数组长度,大于的话跳到结束,不大于的话继续循环
if %objIndex% equ %objLength% goto end
::初始化变量
set objCurrent=0
::这个循环是数组对象处理循环,就是处理单个对象。/f是参数格式 usebackq声明路径有空格
::delims==是以=切割字符串,tokens=1-3是取切割后字符串的前1到3个,%%i表示第一个字符串【比如:obj[0]】,%%j表示第二个字符串【比如:test2】,`set obj[%objIndex%]`和/f取到字符串【比如:obj[0]=test2】
for /f "usebackq delims== tokens=1-2" %%i in (`set obj[%objIndex%]`) do (
:: 赋值变量
set objCurrent=%%j
echo 第一个=%%i
echo 第二个=%%j
)
echo objCurrent=%objCurrent%
::索引+1
set /a objIndex=%objIndex% + 1
::继续循环
goto loopStart
:end
pause
简化版
@echo off & setlocal EnableDelayedExpansion
set obj[0]=test1
set obj[1]=test2
set obj[2]=9876
set obj[3]=wwww
set objCurrent=0
for /l %%a in (0,1,3) do (
for /f "usebackq delims== tokens=1-2" %%i in (`set obj[%%a]`) do (
echo 第一个=%%i
echo 第二个=%%j
set objCurrent=%%j
)
echo objCurrent=!objCurrent!
)
pause
或
@echo off & setlocal EnableDelayedExpansion
set obj[0]=test1
set obj[1]=test2
set obj[2]=9876
set obj[3]=wwww
set objCurrent=0
for %%a in (0,1,2,3) do (
for /f "usebackq delims== tokens=1-2" %%i in (`set obj[%%a]`) do (
echo 第一个=%%i
echo 第二个=%%j
set objCurrent=%%j
)
echo objCurrent=!objCurrent!
)
pause