Board logo

标题: [文本处理] 【已解决】批处理求均值的问题,大家帮忙~~ [打印本页]

作者: 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

  1. @echo off
  2. powershell -c "Get-Content a.txt | Foreach-Object {$s=0}{$s += [Double]($_)}{$s/20}"
  3. pause
复制代码

作者: amwfjhh    时间: 2015-1-12 15:28

  1. @if (0)==(0) echo off
  2. setlocal enabledelayedexpansion
  3. set "strParams="
  4. for /f "delims=" %%i in (1.txt) do set "strParams=!strParams!%%i "
  5. echo,传入参数为 %strParams%
  6. cscript -nologo -e:jscript %~s0 %strParams%
  7. pause & goto :EOF
  8. @end
  9. var nParmCount;
  10. nParamCount = WScript.arguments.length;
  11. var fSum=0, fAvg=0;
  12. for (var i=0; i<nParamCount; i++) {
  13. var fTmp = parseFloat(WScript.arguments(i));
  14. fSum+=fTmp;
  15. }
  16. fAvg = fSum / nParamCount;
  17. WScript.echo(nParamCount + "个数的总和为 : " + fSum + "   平均数为 : " + fAvg);
复制代码

作者: terse    时间: 2015-1-12 15:36

win7 系统 可试 POWERSHELL
  1. cat .\b.txt|measure-object -average
复制代码
非要BAT处理的话 那就加JS吧cript
  1. @if(0)==(0) echo off
  2. CScript.exe -NoLogo -E:JScript %0 < "b.txt"
  3. pause&exit
  4. @end
  5. var text = WSH.StdIn.ReadAll().split('\r\n');
  6. var len = text.length;
  7. var cnt = 0;
  8. for (var i = 0; i < len; i++) {
  9.   var j = +text[i];
  10.   cnt += j;
  11. }
  12. var avg = cnt / len;
  13. 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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in (a.txt) do (
  4.         set "x=%%~xa00"
  5.         set "x=!x:.=!"
  6.         set /a "n+=1,Sum+=%%~na00+1!x:~,2!-100"
  7. )
  8. set /a Avg=Sum/n
  9. echo,!Avg:~,-2!.!Avg:~-2!
  10. 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://bbs.bathome.net/) Powered by Discuz! 7.2