我试图做这样的事情,但我不能让它发挥作用。
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(以避免除以零),但当我添加此行时,我的脚本崩溃。
有人可以帮我吗?感谢!!!
答案 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%