【bat】实现数组,for循环取数据
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
【bat】实现数组,for循环取数据的更多相关文章
- python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
- python locust 性能测试:locsut参数化-保证并发测试数据唯一性,不循环取数据
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
- python locust 性能测试:locust 参数化(list) ---循环取数据,数据可重复使用
from locust import TaskSet, task, HttpLocust class UserBehavior(TaskSet): def on_start(self): # 当模拟用 ...
- php解析json数组(循环输出数据)的实例
以快递100接口为例 返回的JSON数据 {"message":"ok","nu":"350116805826",&qu ...
- mvc中ViewBag返回数组如何循环显示数据
直接在for循环里面定义出viewbag @for (int i = 0; i < ViewBag.permission.Count; i++) { var permission = ViewB ...
- lr参数化——500户并发迭代1次 循环取5条数据
lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuj ...
- PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...
- .net处理页面的抓取数据
//要抓取数据的页面路径 string url = "http://www.scedu.net/banshi/used-car/lower-secondary-education/middl ...
- 代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)
代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到 ...
随机推荐
- 正则,js函数math()提取混乱字符串中多个字符串内容
var a='start111111endstart222222endasdfasdfasdfakjsfhaksdf'+ 'start333333endstart444444end6666666666 ...
- podium layout 说明
layout 主要是进行podlets 的组合,同时也提供了context ,fallback,以及传递参数的处理 基本代码 const express = require('express'); c ...
- [RN] React Native Fetch请求设置超时
一.实现思路 根据Promise.race的特性,我们在Promise.race里面添加两个任务,一个是正常的网络请求任务A,另外一个便是网络延时任务B,网络延时可以利用setTimeout方法实现. ...
- cf1173 D. Nauuo and Circle
链接 [cf]http://codeforces.com/contest/1175/problem/F) 思路 当1在1的位置做dp[i]为i的子树所有的方案. 一条性质是i的子树所占圆上的位置一定一 ...
- Bzoj 3343: 教主的魔法(分块+二分答案)
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MB Description 教主最近学会了一种神奇的魔法,能够使人长高.于是他准备演示给XMYZ信息 ...
- mac 使用tesseract识别图片中的中文
安装 tesseractbrew install tesseract 加入环境变量export TESSDATA_PREFIX=/usr/local/Cellar/tesseract/4.1.0/sh ...
- 【POJ2676】Sudoku
本题传送门 本题知识点:深度优先搜索 + 回溯 问题就是要让我们解决一个数独问题.如果你懂得怎么玩数独的话,那就很自然想到用暴力搜索去做题.(比如我就不会,所以先WA了一发quq) 数独符合三个条件 ...
- 关于window.getSelection
window.getSelection(),返回一个Selection对象,表示用户选择的文本范围或光标的当前位置. selection对象先来看下面两个selection结果:selection对象 ...
- MySql删除重复数据并保留一条
DELETE FROM tbl_1 WHERE id NOT IN( SELECT id FROM ( SELECT min(id) AS id FROM tbl_1 GROUP BY `duplic ...
- hbuilderx - 常用快捷键操作
常用的操作有(缺少一个快捷键,就是选中行) 1. ctrl+/ 注释代码 2. ctrl+y 恢复撤销 3. ctrl+x 剪切 4. ctrl+z 撤销 5. ctrl+c 复制 6. ctrl+p ...