2016-02-05 58 views
0

我有這個問題,我想添加一個參數的內容到另一個。 所以我會解釋給你。這是我的一些代碼:批處理 - 如何將幾個變量添加到一個變量?

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」。我已經有一個選項,在我的腦海裏如何做到這一點,但這將是非常複雜的... 所以任何人都可以幫助我呢? :) 問候

+1

*「我已經有了一個選項,在我的腦海裏如何做到這一點,但這會非常複雜。」* - 請詳細說明。 – GolezTrol

回答

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 - 你的問題是關於「添加幾個變量到一個變量」;一個參數是不同的事情。我建議你改變主題標題。

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% 
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

相關問題