Batch file 如何在echo命令中使用嵌套变量
如何编写一次使用两个嵌套变量(如数组)的代码?我试图创建一系列由用户指定的变量(从Batch file 如何在echo命令中使用嵌套变量,batch-file,Batch File,如何编写一次使用两个嵌套变量(如数组)的代码?我试图创建一系列由用户指定的变量(从1到该数字的数组索引),它们的名称也由用户指定(数组名称),但当我这样做时,不会返回任何内容。有人能帮我吗 echo how many people? set /p number= echo. echo. for /l %%a in (1,1,%number%) do ( echo name of %%a person set /p s%%a = echo. echo. ec
1
到该数字的数组索引),它们的名称也由用户指定(数组名称),但当我这样做时,不会返回任何内容。有人能帮我吗
echo how many people?
set /p number=
echo.
echo.
for /l %%a in (1,1,%number%) do (
echo name of %%a person
set /p s%%a =
echo.
echo.
echo.
if %%a==%number% (
echo names are
pause
for /l %%n in (1,1,%number%) do (
echo name %%n is %s%%a%
)
)
)
您缺少延迟扩展: 在批处理中,一次计算一个封闭的圆括号块,因此当在圆括号内访问时,在圆括号内更改的变量值将不会使用普通的
%myVar%
显示
但是,要执行此操作,请在脚本顶部添加setlocal EnableDelayedExpansion
,并将%myVar%
更改为!迈瓦尔代码>
顺便说一句,使用命令@echo off
可以抑制许多不必要的命令行输出:)因此,您尝试创建一个伪数组,因为批处理文件本机没有数组。因此,您需要使用延迟扩展来获得预期的输出
@echo off
SetLocal EnableDelayedExpansion
echo how many people?
set /p number=
echo.
echo.
for /l %%a in (1,1,%number%) do (
echo name of %%a person
set /p s%%a=
echo.
echo.
echo.
if %%a==%number% (
echo names are
for /l %%n in (1,1,%number%) do (
echo name %%n is !s%%n!
)
)
)
pause
谢谢你的帮助,但是你能解释一下%myVar%吗!迈瓦尔!我不明白如果您有例如%number%
将其更改为,我应该更换什么!号码代码>因此将%
更改为代码>。我什么也没做除了缺少延迟扩展之外,您必须删除=
登录设置/p s%%a=
前的空格,使其不成为变量名的一部分…请参阅