找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 79132|回复: 20

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

[复制链接]
发表于 2015-1-12 12:37:01 | 显示全部楼层 |阅读模式
本帖最后由 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等于多少

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-1-12 14:13:49 | 显示全部楼层
回复 1# oqis

批处理不支持小数的运算,可以借助第三方工具或是用vbs
conset.exe (http://bathome.net/thread-12865-1-1.html)
 楼主| 发表于 2015-1-12 14:44:31 | 显示全部楼层
回复 2# pcl_test
能否帮我写一段,vbs也可以。
发表于 2015-1-12 15:13:27 | 显示全部楼层
  1. @echo off
  2. powershell -c "Get-Content a.txt | Foreach-Object {$s=0}{$s += [Double]($_)}{$s/20}"
  3. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-1-12 15:28:18 | 显示全部楼层

  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-1-12 15:36:30 | 显示全部楼层
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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-1-12 19:20:05 | 显示全部楼层
回复 5# amwfjhh

不知何故,我运行有提示
 楼主| 发表于 2015-1-12 19:22:53 | 显示全部楼层
回复 4# DAIC
可以运行计算结果,但是速度慢,可能是win7+PowerShell2.0的缘故吧?在更新。。。。。。
 楼主| 发表于 2015-1-12 19:25:44 | 显示全部楼层
回复 6# terse
啊 一样的情况~
发表于 2015-1-12 19:43:57 | 显示全部楼层
回复  terse
啊 一样的情况~~~~~
oqis 发表于 2015-1-12 19:25


你什么环境
 楼主| 发表于 2015-1-12 19:48:54 | 显示全部楼层
回复 10# terse
win7 精简版 可能少了什么? 你看我要装点啥~~~~~~~~~~~~~~~~
 楼主| 发表于 2015-1-12 20:13:55 | 显示全部楼层
回复 10# terse
要不把小数点都省去,计算出结果,再点上。也可以呀!没影响。
发表于 2015-1-12 21:19:13 | 显示全部楼层
gawk "{A[++i]=A[i]+$1;};END{print A[i]/i;}" 1.txt
发表于 2015-1-12 21:32:51 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

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


6楼 powershell 也不好用吗
这个总不会精简掉了不
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 21:35 , Processed in 0.021349 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表