bat 實現陣列,for迴圈取資料

2022-04-08 10:31:38 字數 3631 閱讀 8953

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 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

::繼續迴圈

簡化版

@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

@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

陣列實現迴圈佇列

1 動態陣列型別 typedef struct qnode queue 1 分配結構體內存與陣列記憶體 queue initialize1 相應main函式 int main 2 只分配陣列記憶體不分配結構記憶體 int initialize2 queue q 相應main函式 int main 2...

迴圈陣列實現佇列

佇列是先進先出 fifo 模式,從隊尾加入元素的操作叫入隊,從隊首刪除元素的操作叫出隊 設定兩個指標分別為front指向隊首,real指向隊尾。開始時front和real分別為 1。當有元素入隊時real 1 當有元素出隊時front 1.public class queuesimulation s...

迴圈佇列 陣列實現

迴圈佇列是指,隊尾指標走到末尾後,還可以繼續從頭開始走.front指標仍然是指向第乙個元素的前乙個元素,rear指標指向最後乙個元素.下面我們重點討論一下迴圈佇列如何判斷空和滿的問題?判斷佇列空和滿是直接根據q length屬性來判斷,當q length為0,表示隊列為空,當q length max...