cmd动态创建和读取变量

本文介绍了如何在CMD命令行中动态创建和读取变量,详细解析了CMD处理变量的过程,包括识别变量、设置变量及读取变量的方法。通过示例展示了如何利用for循环和set命令实现变量的动态操作,并解释了为何直接通过%num%k%%无法读取动态变量值,提出了使用set命令配合for/f读取的解决方案。
摘要由CSDN通过智能技术生成

cmd的功能实在太少了,很多功能都需要自己实现。
“动态创建和读取变量”可以实现类似表格的效果,以及更多东西。

常识:使用for命令时,如果直接在cmd窗口中执行,for自带的变量前只有1个%,写在脚本中执行,则需要有2个%

1.创建

cmd对变量的处理是这样的:
以这条命令为例:(k=abc

echo %k%777

1.识别有没有变量标记:%%。(如果执行过setlocal enabledelayedexpansion,变量标记为!!
…本例中找到了%k%,有变量k
2.若找到了变量标记,搜索这个变量是否存在,值是多少。
…本例中找到了k的值abc
3.若找到了变量值,将命令中的变量替换为变量值。
…本例中将k替换为abc
4.执行经过了替换的指令。
…本例最终执行的命令为:

echo abc777

cmd中设置变量用set,所以我们可以像这样动态设置变量:

for /l %n in (1,1,7) do (
	set num%n=%n 
)

只执行set而不带参数可以查看目前所有变量,执行上面命令后查看,我们会发现多出了这些变量:

num1=1
num2=2
num3=3
num4=4
num5=5
num6=6
num7=7

动态设置变量,直接在set命令里加变量即可。

2.读取

上面描述的cmd处理变量的过程中,变量标志%%是不分左右的。cmd读取到一个%时,它会等待第二个%。当读取到第二个%时,它就会将两个%之间的部分认作变量名。
这也就意味着,当你试图通过%num%k%%k=1)来实现读取num1的值时,cmd读到的事实上是%num% k %%,因此直接调用动态变量行不通。
这时我们要用到set的另一个用法:在set后加一个不带等号的字符串,它就会查找当前存在的名称中包含这个字符串的变量。所以我们可以这么做:

set num%k%

就可以得到回显:

num1=1

再用for /f读取回显:

for /f "tokens=2* delims==" %s in ('set num%k%') do (echo %s)

这样就可以将动态变量的值传入%s。然后我们就可以创建其他的变量,将动态变量的值传出去,或者直接在for中使用。
示例:(接上面“读取”中的例子)

for /l %n in (1,1,7) do (
	for /f "tokens=2* delims==" %s in ('set num%n') do (echo %s)
)

得到输出:

1
2
3
4
5
6
7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值