[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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等于多少
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 1# oqis

批处理不支持小数的运算,可以借助第三方工具或是用vbs
conset.exe (http://bathome.net/thread-12865-1-1.html)

TOP

回复 2# pcl_test
能否帮我写一段,vbs也可以。

TOP

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

评分人数

TOP

  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);
复制代码
1

评分人数

TOP

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)
复制代码
1

评分人数

TOP

回复 5# amwfjhh

不知何故,我运行有提示

TOP

回复 4# DAIC
可以运行计算结果,但是速度慢,可能是win7+PowerShell2.0的缘故吧?在更新。。。。。。

TOP

回复 6# terse
啊 一样的情况~

TOP

回复  terse
啊 一样的情况~~~~~
oqis 发表于 2015-1-12 19:25


你什么环境

TOP

回复 10# terse
win7 精简版 可能少了什么? 你看我要装点啥~~~~~~~~~~~~~~~~

TOP

回复 10# terse
要不把小数点都省去,计算出结果,再点上。也可以呀!没影响。

TOP

gawk "{A[++i]=A[i]+$1;};END{print A[i]/i;}" 1.txt

TOP

  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
复制代码
1

评分人数

TOP

回复  terse
要不把小数点都省去,计算出结果,再点上。也可以呀!没影响。
oqis 发表于 2015-1-12 20:13


6楼 powershell 也不好用吗
这个总不会精简掉了不

TOP

返回列表