到目前为止,我的代码看起来像这样:
:start
set a=0
echo Enter Number:
set /p b%a%=
set /a a=%a%+1
if %a% lss 5 goto start
set x=1
:show
echo Number 1: %b%a%%
if %x% lss 5 goto show
这可能吗?它就像一个数组,但从技术上讲它不是。
答案 0 :(得分:2)
是的,这可以通过下面的批处理代码进行演示。
@echo off
setlocal EnableDelayedExpansion
set "a=1"
:LoopEnterNumbers
set /P "b%a%=Enter Number: "
set /A a+=1
if %a% lss 6 goto LoopEnterNumbers
set "a=1"
:LoopDisplayNumbers
echo Number %a%: !b%a%!
set /A a+=1
if %a% lss 6 goto LoopDisplayNumbers
endlocal
start
是Windows标准命令。可以但不建议将其用作标签。
可以在命令set /P
上指定提示文本
有关详细信息,请参阅How to set environment variables with spaces?。
set /A
之后的所有内容都被解释为算术表达式,并且也支持+=
。
需要使用延迟环境变量扩展来引用环境变量的值以及名称中的另一个环境变量。
BTW:命令set b
以字符name=value
开头输出格式为b
的所有环境变量。使用更独特的名称,这通常是比上面使用的循环更好的输出变量的方法。
@echo off
setlocal EnableDelayedExpansion
set a=1
:LoopEnterNumbers
set /P "MyNumber#%a%=Enter Number: "
set /A a+=1
if %a% lss 6 goto LoopEnterNumbers
for /F "tokens=2,3 delims=#=" %%I in ('set MyNumber#') do echo Number %%I%: %%J
endlocal
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
goto /?
if /?
set /?
setlocal /?