Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何在echo命令中使用嵌套变量_Batch File - Fatal编程技术网

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=
前的空格,使其不成为变量名的一部分…请参阅