批处理怎么利用for循环把多个数值赋值给多个变量
例:38,146,221,249这4个数怎么分别赋值到S1,S2,S3,S4这4个变量中?要求bat在给定未知数量的数值时,也能够分别赋值到对应的变量中去。(当有3个数就...
例:
38,146,221,249这4个数怎么分别赋值到S1,S2,S3,S4这4个变量中?
要求bat在给定未知数量的数值时,也能够分别赋值到对应的变量中去。(当有3个数就分别复制到S1,S2,S3;有5个数就赋值到S1,S2,S3,S4,S5;有n个数就赋值到S1...Sn中去) 展开
38,146,221,249这4个数怎么分别赋值到S1,S2,S3,S4这4个变量中?
要求bat在给定未知数量的数值时,也能够分别赋值到对应的变量中去。(当有3个数就分别复制到S1,S2,S3;有5个数就赋值到S1,S2,S3,S4,S5;有n个数就赋值到S1...Sn中去) 展开
2个回答
展开全部
核心思想:开启CMD的延缓环境变量功能,使用“!!”获取动态生成的变量,开启了CMD的延缓环境变量功能后才可以使用“!!”来获取变量的值,而且是当脚本运行到“!!”时才查找符号表来取值,所以可以获取动态生成的变量的值,普通的“%%”是在该语句刚读取到后就替换好字符串,当遇到这种情况的循环时就不好用了。
示例代码:
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR /L %%i IN (1,1,10) DO (
SET/a a%%i=%%i+%%i
)
FOR /L %%i IN (1,1,10) DO (
echo !a%%i!
)
测试结果:
“setlocal ENABLEDELAYEDEXPANSION”就是开启CMD的延缓环境变量的功能,具体说明执行“setlocal/?”查看
展开全部
@echo off
setlocal enabledelayedexpansion
set Str=38,146,221,249
for %%a in (%Str%) do (
set /a Num+=1
set "S!Num!=%%~a"
)
追问
你好,为什么我执行之后还是显示的是set "S!Num!=249",而不是S4=249
追答
不可能的,因为这是我测试过的。所以肯定是你那书写有问题。
你把上面的命令写进一个新的脚本里,把第二个set改成echo,并最后加上一行pause。然后运行一下,看看结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询