批处理 - 如何将几个变量添加到一个变量?

时间:2016-02-05 14:12:29

标签: batch-file batch-processing

我有这个问题,我想将一个参数的内容添加到另一个参数。 所以我会向你解释一下。这是我的一些代码:

set /a A=%A1%+%A2%+%A3%+%A4%+%A5%+%A6%+%A7%+%A8%+%A9%
set /a B=%B1%+%B2%+%B3%+%B4%+%B5%+%B6%+%B7%+%B8%+%B9%
set /a C=%C1%+%C2%+%C3%+%C4%+%C5%+%C6%+%C7%+%C8%+%C9%
set /a D=%D1%+%D2%+%D3%+%D4%+%D5%+%D6%+%D7%+%D8%+%D9%
set TestTheAnswer= The following lines are wrong: 
if %A% NEQ 45 (then it should add "A, " to %TestTheAnswer% and of course the same with the other ones.)
echo %TestTheAnswer%

最后它应该是这样的: “以下行是错误的:A,B,D,”。我已经有了一个选项,如何在我的脑海里这样做,但它会非常复杂...... 所以有人可以帮我这个吗? :) 问候

3 个答案:

答案 0 :(得分:0)

只需将A,添加到变量中:

...
set "wrongs= "
if %A% NEQ 45 set "wrongs=%wrongs%A, "
if %B% NEQ 45 set "wrongs=%wrongs%B, "
if %C% NEQ 45 set "wrongs=%wrongs%C, "
if %D% NEQ 45 set "wrongs=%wrongs%D, "
echo The following lines are wrong:%wrongs%

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /L %%a IN (1,1,9) DO SET /a A%%a=%%a * 2
SET /a total=0
FOR /L %%a IN (1,1,9) DO SET /a total+=A%%a

SET a
ECHO %total%

GOTO :EOF

我不知道45与鱼的价格有什么关系。你似乎正在做的是总计A1..A9,B1..B9 .. D1..D9然后对B..D

的总数无所作为

不过,这是一个简单的方法来进行总计。我已将A1 .. A9设置为一组数字,然后将它们合计并显示总数以及安装在A *中的值。

HTH

答案 2 :(得分:0)

确定。这里有几点;第一个是set /A命令可以只使用变量的名称,因此不需要所有变量扩展。这应该有效:

set /a A=A1+A2+A3+A4+A5+A6+A7+A8+A9
set /a B=B1+B2+B3+B4+B5+B6+B7+B8+B9
set /a C=C1+C2+C3+C4+C5+C6+C7+C8+C9
set /a D=D1+D2+D3+D4+D5+D6+D7+D8+D9
set "TestTheAnswer= The following lines are wrong:"
if %A% NEQ 45 set "TestTheAnswer=%TestTheAnswer% A,"
if %B% NEQ 45 set "TestTheAnswer=%TestTheAnswer% B,"
if %C% NEQ 45 set "TestTheAnswer=%TestTheAnswer% C,"
if %D% NEQ 45 set "TestTheAnswer=%TestTheAnswer% D,"
echo %TestTheAnswer:~0,-1%

但是,具有相同名称和更改下标的变量集合称为“数组”,并且数组的优点是您不需要显式写入数组的每个元素,但只需编写一个元素并通过for命令更改下标。此外,您可以充分利用set /A命令允许执行几个操作的事实,用逗号分隔每个操作:

setlocal EnableDelayedExpansion

for /L %%i in (1,1,9) do set /A A+=A%%i, B+=B%%i, C+=C%%i, D+=D%%i
set "TestTheAnswer= The following lines are wrong:"
for %%v in (A B C D) do if !%%v! NEQ 45 set "TestTheAnswer=!TestTheAnswer! %%v,"
echo %TestTheAnswer:~0,-1%

有关批处理文件中阵列管理的更多详细信息,请参阅:Arrays, linked lists and other data structures in cmd.exe (batch) script

PS - 你的问题是“将几个变量添加到一个变量”; 参数是另一回事。我建议你改变主题标题。