如何编写一次使用两个嵌套变量,如数组?我试图创建一些由用户指定的变量(数组索引从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%
)
)
)
答案 0 :(得分:1)
所以你要做的是创建一个伪数组,因为批处理文件本身没有数组。因此,您需要使用延迟扩展来获得预期的输出。
@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
答案 1 :(得分:0)
您缺少DelayedExpansion:
在批处理中,一次关闭的括号内容块会立即计算出来,因此在其中访问时,使用正常%myVar%
将无法显示其中更改的变量值。
要执行此操作,请在脚本顶部添加setlocal EnableDelayedExpansion
,然后将%myVar%
更改为!myVar!
。
顺便使用命令@echo off
可以抑制大量不必要的命令行输出:)