我已经创建了一个代码但是当我要显示它时,我只显示我输入的最后一个数字。请帮帮我。
@echo off
set /a count = 0
set /p process= How many process:
:BT
echo BT
FOR /L %%A IN (1,1,%process%) DO (
set /p bt [%%A]=
IF %%A == %process% goto AT
)
:AT
echo AT
FOR /L %%A IN (1,1,%process%) DO (
set /a count = %%A
set /p at[count]=
IF %%A == %process% goto TABLE
)
:TABLE
echo TABLE
echo PROCESS AT BT
FOR /L %%A IN (1,1,%process%) DO (
set /a count = %count%+1
echo P%%A %at[count]%
IF %%A == %process% goto AWT
)
:AWT
pause
答案 0 :(得分:1)
@echo off
set /p process= How many process:
:BT
echo BT
FOR /L %%A IN (1,1,%process%) DO (
set /p bt[%%A]=
)
:AT
echo AT
FOR /L %%A IN (1,1,%process%) DO (
set /p at[%%A]=
)
:TABLE
echo TABLE
echo PROCESS AT BT
FOR /L %%A IN (1,1,%process%) DO (
CALL echo P%%A %%at[%%A]%% %%bt[%%A]%%
)
:AWT
pause
GOTO :EOF
这是一个固定版本。
注意:count
不是必需的。 %%A
包含索引1 .. %process%
。
字符串分配(例如=
)中set /p
的 侧的空格是重要的,因此bt
和[
之间的空格goto
已被删除。
批量只需通过程序行收费,直到遇到call
,exit
或for
为止。因此不需要循环结束的测试 - 一旦at[count]
循环结束,批处理就会传递到下一条指令行。
whatever
是变量名,与at[%count%]
相同。 count
表示[1] ..在[??],取决于at[%count%]
中的值 - 但只有 <&34>块&#34; (带括号的系列线)。 在块中,at[??]
表示??
,其中count
是遇到for
语句时at[]
的值。你甚至可能是 nothingatall - 一个空字符串(即call echo
,这是一个有效的变量名。)
%%A
方法使用解析技巧首先替换metavariable
(循环控件或echo
),然后%at[2]%
setlocal
。有些人不喜欢使用这种方法 - 它比设计的&#34;慢。方法和罕见的深奥条件可能无法产生正确的结果。有两个&#34;官方&#34;在循环中访问变量的运行时或当前值的方法 - {{1}}并使用子程序调用 - 这两种方法都在SO上广泛记录