批处理脚本 - 将变量值添加到同一变量

时间:2014-06-17 20:53:24

标签: batch-file

我试图做这样的事情,但我不能让它发挥作用。

for /F "tokens=1" %%a in (C:\Auxiliar4.txt) do (

 if !counter! EQU 3 (set /A failed=%%a)
 if !counter! EQU 9 (set /A completed=%%a)
 if !counter! EQU 6 (set /A total=%%a)

set /A counter+=1

)

set /A counter=0

set /A failedday=%failedday%+%failed%

if %total% NEQ 0 (set /A success=(%completed%*100)/%total%)

我的问题在于这两行:

set /A failedday=%failedday%+%failed%

if %total% NEQ 0 (set /A success=(%completed%*100)/%total%)

第一个问题是变量" failedday",我需要读取txt文件中的数值,将它们分配给那些变量(失败,完成,总计),然后分配&#34的值;失败"到了"失败的日子"。然后另一个FOR循环开始读取具有相同格式的不同txt,将这些数值分配给"失败",""完成","总"再次(丢失以前的值),并添加新的值"失败"到了"失败的日子"保留前一个添加(例如,在第一个&#34之后提交日= 2;对于",在第二个之后应该是失败日= 2 +新"失败"值)。

第二个问题是" IF"结构体。我需要计算从" For"循环,只有"总计"不等于0(以避免除以零),但当我添加此行时,我的脚本崩溃。

有人可以帮我吗?感谢!!!

1 个答案:

答案 0 :(得分:0)

这里的previous StackOverflow question提出了同样的问题。

这是doing arithmetic with DOS Batch files的另一个参考。

您需要启用延迟扩展才能执行算术:

@echo off & setlocal EnableDelayedExpansion
set /A failed=0
set /A completed=0
set /A total=0

for /F "tokens=1" %%a in (C:\Temp\test.txt) do (
 if !counter! EQU 3 (set /A failed=%%a)
 if !counter! EQU 9 (set /A completed=%%a)
 if !counter! EQU 6 (set /A total=%%a)

 set /A counter+=1
)

echo Failed: %failed%
echo Completed: %completed%
echo Total: %total%

set /A counter=0

set /A failedday=failedday+failed

if total NEQ 0 (set /A success=completed*100/total)
echo Success: %success%