早教吧 育儿知识 作业答案 考试题库 百科 知识分享

bat中for和if连用的问题setuserArr=aabbccddsetpswdArr=aabbccddsetarrLength=4set/aflag1=1set/aflag2=1for%%ain(%userArr%)do(for%%bin(%pswdArr%)do(if%flag1%==%flag2%(exp%%a/%%b@SIDfile=c:\a.dmp)if%arrLength%==%flag2%(se

题目详情
bat中for和if连用的问题
set userArr=aa bb cc dd
set pswdArr=aa bb cc dd
set arrLength=4
set /a flag1=1
set /a flag2=1
for %%a in (%userArr%) do (
for %%b in (%pswdArr%) do (
if %flag1%==%flag2% (exp %%a/%%b@SID file=c:\a.dmp)
if %arrLength%==%flag2% (set /a flag2=1) else (set /a flag2+=1)
echo %flag2%
)
if %arrLength%==%flag1% (set /a flag1=1) else (set /a %flag1%+=1)
)
我有两个数组,一个存用户名,一个存密码
我想用循环把数组里对应的用户数据导出来.不过在这个循环里出现了问题
if %arrLength%==%flag2% (set /a flag2=1) else (set /a flag2+=1)
echo %arrLength% %flag2%
我先判断arrLength和flag2是否相同,如果相同,我把flag2赋为1,不同就+1.
我同时在后面echo了一下,发现arrLength=4,flag2=1.我很纳闷,为什么我都+1了,flag2还是1呢?这里面出现什么问题了吗?
▼优质解答
答案和解析
bat命令里在一个复合句中变量取值用%%总是取的本复合句之前时的值,可在此前加句
setlocal enabledelayedexpansion 意思设置变量本地化并启用变量延迟扩展功能,则在需要延迟扩展的地方,用一对! 代替一对%取变量值即可
你是会编程的,我就不细看了.