批处理 - 如何将多个变量添加到一个变量?
Batch - How to add several variables to one variable?
我有这个问题,我想将一个参数的内容添加到另一个参数中。
所以我会向你解释这个。这是我的一些代码:
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%
最后应该是这样的:
"The following lines are wrong: A, B, D ,"。我已经想到了如何做到这一点,但它会非常复杂......
那么有人可以帮我吗? :)
问候
只需将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%
@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
好的。这里有几点;第一个是 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%
然而,一个 collection 同名的变量和一个变化的 下标 被称为 "array",数组的优点是你不需要不需要显式写入数组的每个元素,只需写入 一个 元素并通过 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 - 你的问题是关于 "add several variables to one variable"; 参数是另一回事。我建议您更改主题标题。
我有这个问题,我想将一个参数的内容添加到另一个参数中。 所以我会向你解释这个。这是我的一些代码:
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%
最后应该是这样的: "The following lines are wrong: A, B, D ,"。我已经想到了如何做到这一点,但它会非常复杂...... 那么有人可以帮我吗? :) 问候
只需将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%
@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
好的。这里有几点;第一个是 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%
然而,一个 collection 同名的变量和一个变化的 下标 被称为 "array",数组的优点是你不需要不需要显式写入数组的每个元素,只需写入 一个 元素并通过 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 - 你的问题是关于 "add several variables to one variable"; 参数是另一回事。我建议您更改主题标题。