【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后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到 ...
随机推荐
- solr根据id删除索引
删除solr索引数据,使用XML有两种写法: 1) <delete><id>1</id></delete> <commit/> 2) < ...
- 提交代码报错 error: failed to push some refs to
在本人想把本地的分支推送到远程仓库时,突然出现了错误提醒error: failed to push some refs to....心里一咯噔,推不上去这还得了,手比脑快地就去google了一下. 然 ...
- 67-Flutter中高德地图插件的使用
1.注册和建立高德API应用 高德网站:https://lbs.amap.com/ 控制台-应用管理-创建应用 在创建 Key 2.获得SHA1 进入Flutter项目中的android文件夹内,打开 ...
- BZOJ 3048: [Usaco2013 Jan]Cow Lineup 双指针
看到这道题的第一个想法是二分+主席树(好暴力啊) 实际上不用这么麻烦,用一个双指针+桶扫一遍就行了 ~ code: #include <bits/stdc++.h> #define N 1 ...
- linux 下安装git的步骤方法
①.获取github最新的Git安装包下载链接,进入Linux服务器,执行下载,命令为: wget https://github.com/git/git/archive/v2.17.0.tar.gz ...
- Xamarin.Forms之XAML
官网参考 XAML基础知识 XAML(eXtensible Application Markup Language)可扩展应用程序标记语言,允许开发者在Xamarin.Forms应用中采用标记而不是代 ...
- 统计学基础知识(一)---描述统计学(Descriptive Statistics)
描述统计学(Descriptive Statistics):将数据的信息以表格, 图形或数值的形式进行汇总. 数据类型:分为定量数据(数值型数据)和定性数据(类别型数据).数值型数据又可以分为连续型和 ...
- OpenFlow和SDN的历史和原理介绍
OpenFlow相关的历史.新闻:http://blog.csdn.net/jincm13/article/details/7825754起源与发展[https://36kr.com/p/503598 ...
- SpringMVC相关试题
1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...
- Java动态代理-实战
Java动态代理-实战 只要是写Java的,动态代理就一个必须掌握的知识点,当然刚开始接触的时候,理解的肯定比较浅,渐渐的会深入一些,这篇文章通过实战例子帮助大家深入理解动态代理. 说动态代理之前,要 ...