2013-11-07 3 views
1

Я новичок в программировании в пакетных файлах на окнах, поэтому, надеюсь, кто-то может мне помочь: Я хочу использовать командный файл для суммирования всех значений столбца 3 в CSV-файл с именем «TEST.csv»:Суммировать значения в столбце с помощью командного файла

01/01/2013;1;1342 
01/01/2013;2;1484 
01/01/2013;3;1528 

После этого, я хочу использовать Условный оператор: , если общая сумма столбца 3 не равен 0, то запуск конкретной программы blabla.exe

Большое спасибо!

+0

Если отрицательные значения не допускаются, если линия имеет не значение 0, нет необходимости суммировать данные. –

ответ

2
setlocal enabledelayedexpansion 

for /f "tokens=3 delims=;" %%a in (test.csv) do (
    set /a num=!num!+%%a 
) 
if !num! GTR 0 blabla.exe 

Чтобы справиться с десятичными знаками:

setlocal enabledelayedexpansion 

for /f "tokens=3 delims=;" %%a in (test.csv) do (
    set num=!num!+%%a 
    ) 
    set num=!num:~1! 
call :Eval !num! ret 
if %ret% GTR 0 blabla.exe 
exit /b 

:Eval in out 
setlocal 
if exist eval.vbs del eval.vbs 
>eval.vbs echo wsh.echo eval("%1") 
for /f "delims=" %%a in ( 
    'cscript //nologo eval.vbs' 
) do endlocal & set %~2=%%a 
del eval.vbs 
+0

Спасибо. Однако он пока не работает. Он говорит «недостающий оператор» 6 раз. Любая идея почему? Я проверил файл, и в этом примере есть 6 значений, не равных нулю. Эти 6 значений имеют 3 десятичных знака, используя '.' как десятичный знак. Может, в этом причина? – Hans

+0

Когда я удаляю десятичные знаки, это работает! Итак, теперь мне нужен только способ обработки этих десятичных знаков в csv-файле. – Hans

+0

Математическая математика и математика с плавающей точкой не укладываются хорошо. Я обычно использую это для небольшой функции vbscript. См. Приведенное выше изменение. –

Смежные вопросы