标题: [文本处理] 【已解决】批处理求均值的问题,大家帮忙~~ [打印本页]
作者: oqis 时间: 2015-1-12 12:37 标题: 【已解决】批处理求均值的问题,大家帮忙~~
本帖最后由 oqis 于 2015-1-13 06:18 编辑
4.63
4.75
4.84
4.78
4.74
4.59
4.59
4.59
4.60
4.80
4.83
4.75
4.64
4.62
4.83
4.72
4.67
4.69
4.78
4.79
就是这列数字的合除以20等于多少
作者: pcl_test 时间: 2015-1-12 14:13
回复 1# oqis
批处理不支持小数的运算,可以借助第三方工具或是用vbs
conset.exe (http://bathome.net/thread-12865-1-1.html)
作者: oqis 时间: 2015-1-12 14:44
回复 2# pcl_test
能否帮我写一段,vbs也可以。
作者: DAIC 时间: 2015-1-12 15:13
- @echo off
- powershell -c "Get-Content a.txt | Foreach-Object {$s=0}{$s += [Double]($_)}{$s/20}"
- pause
复制代码
作者: amwfjhh 时间: 2015-1-12 15:28
- @if (0)==(0) echo off
- setlocal enabledelayedexpansion
-
- set "strParams="
- for /f "delims=" %%i in (1.txt) do set "strParams=!strParams!%%i "
- echo,传入参数为 %strParams%
- cscript -nologo -e:jscript %~s0 %strParams%
-
- pause & goto :EOF
- @end
-
- var nParmCount;
- nParamCount = WScript.arguments.length;
- var fSum=0, fAvg=0;
- for (var i=0; i<nParamCount; i++) {
- var fTmp = parseFloat(WScript.arguments(i));
- fSum+=fTmp;
- }
- fAvg = fSum / nParamCount;
- WScript.echo(nParamCount + "个数的总和为 : " + fSum + " 平均数为 : " + fAvg);
复制代码
作者: terse 时间: 2015-1-12 15:36
win7 系统 可试 POWERSHELL- cat .\b.txt|measure-object -average
复制代码
非要BAT处理的话 那就加JS吧cript- @if(0)==(0) echo off
- CScript.exe -NoLogo -E:JScript %0 < "b.txt"
- pause&exit
- @end
- var text = WSH.StdIn.ReadAll().split('\r\n');
- var len = text.length;
- var cnt = 0;
- for (var i = 0; i < len; i++) {
- var j = +text[i];
- cnt += j;
- }
- var avg = cnt / len;
- WSH.echo(avg)
复制代码
作者: oqis 时间: 2015-1-12 19:20
回复 5# amwfjhh
不知何故,我运行有提示
作者: oqis 时间: 2015-1-12 19:22
回复 4# DAIC
可以运行计算结果,但是速度慢,可能是win7+PowerShell2.0的缘故吧?在更新。。。。。。
作者: oqis 时间: 2015-1-12 19:25
回复 6# terse
啊 一样的情况~
作者: terse 时间: 2015-1-12 19:43
回复 terse
啊 一样的情况~~~~~
oqis 发表于 2015-1-12 19:25
你什么环境
作者: oqis 时间: 2015-1-12 19:48
回复 10# terse
win7 精简版 可能少了什么? 你看我要装点啥~~~~~~~~~~~~~~~~
作者: oqis 时间: 2015-1-12 20:13
回复 10# terse
要不把小数点都省去,计算出结果,再点上。也可以呀!没影响。
作者: yiwuyun 时间: 2015-1-12 21:19
gawk "{A[++i]=A[i]+$1;};END{print A[i]/i;}" 1.txt
作者: apang 时间: 2015-1-12 21:32
- @echo off
- setlocal enabledelayedexpansion
- for /f %%a in (a.txt) do (
- set "x=%%~xa00"
- set "x=!x:.=!"
- set /a "n+=1,Sum+=%%~na00+1!x:~,2!-100"
- )
- set /a Avg=Sum/n
- echo,!Avg:~,-2!.!Avg:~-2!
- pause
复制代码
作者: terse 时间: 2015-1-12 21:56
回复 terse
要不把小数点都省去,计算出结果,再点上。也可以呀!没影响。
oqis 发表于 2015-1-12 20:13
6楼 powershell 也不好用吗
这个总不会精简掉了不
作者: DAIC 时间: 2015-1-12 21:58
回复 8# oqis
我也是Win7+PowerShell2.0,一瞬间就执行完了,你真正要处理的文本有很多行吗?
作者: DAIC 时间: 2015-1-12 21:58
回复 11# oqis
精简版的系统就是自己做。换成原版吧。
作者: amwfjhh 时间: 2015-1-12 23:59
回复 7# oqis
你最好用论坛的原码复制功能,璋则除非你的电脑是被精简到不行了,不然这个基本的语法是肯定会支持的。
作者: oqis 时间: 2015-1-13 06:13
回复 13# yiwuyun
通过 :) 感谢
作者: oqis 时间: 2015-1-13 06:15
本帖最后由 oqis 于 2015-1-13 06:20 编辑
回复 14# apang
又通过了:) ~~~~~~~~~~~~~多谢热心人
作者: oqis 时间: 2015-1-13 06:17
本帖最后由 oqis 于 2015-1-13 06:19 编辑
回复 16# DAIC
可能是我系统要更新点东西,pshell可以搞定,谢谢了~~~~~~~~~~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |