批处理怎么利用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中去)
展开
 我来答
zaifujin1234
2017-06-12 · TA获得超过155个赞
知道小有建树答主
回答量:96
采纳率:100%
帮助的人:52.5万
展开全部

核心思想:开启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/?”查看

依梦琴瑶
高粉答主

2017-06-12 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
@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。然后运行一下,看看结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式