[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aa77dd@163.com 于 2015-8-25 13:40 编辑

回复 15# serena

有 bug, 当求和结果绝对值 < 0.1 时 或者 负数小数 取符号时, 都会触发

5 楼已更新


如楼下所言, 你的数据文件按 用户号排序, 在 EXCEL 里分类汇总就 OK 了, 很简单的

TOP

本帖最后由 pcl_test 于 2015-8-25 13:35 编辑

vbs
  1. Set Dict = CreateObject("Scripting.Dictionary")
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set File1 = fso.OpenTextFile(".\测试.txt", 1)
  4. Set File2 = fso.CreateTextFile(".\结果.txt", 2)
  5. Do While File1.AtEndOfStream <> True
  6.     arr = split(File1.ReadLine,"        ")
  7.         If Dict.Exists(arr(0)) <> True Then
  8.             Dict.Add arr(0), arr(1)
  9.         Else
  10.             tmp = CDbl(Dict.Item(arr(0)))+CDbl(arr(1))
  11.             Dict.Item(arr(0))=tmp
  12.         End If
  13. Loop
  14. objKeys = Dict.Keys
  15. objItems = Dict.Items
  16. For i = 0 To Dict.Count -1
  17.     File2.WriteLine objKeys(i)&"="&formatnumber(objItems(i),2,true)
  18. Next
  19. File1.Close
  20. File2.Close
  21. Dict.RemoveAll
  22. Set Dict = Nothing
  23. Msgbox "完成"
复制代码
用Excel也可很方便合并求和

TOP

本帖最后由 回家路上 于 2015-8-30 11:37 编辑

学了set,请教了5楼,也没写好。待改进O(∩_∩)O!
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=1-3 delims=. " %%i in ('sort a.txt') do (
  3. set d=%%j
  4. if "%%i"=="!flag!" (
  5. set /a "neg=^!(!d:~1!+!d!),pos=^!neg,int+=%%j,s=^!((int>>31)-(%%j>>31)),n=^!s,dec-=s*(%%k+0),dec+=n*(%%k+0),int+=dec/10,dec=dec%%10"
  6. ) else (
  7. if defined flag (
  8. set /a "dec=(1+2*(dec>>31))*dec"
  9. echo;!flag!=!int!.!dec!
  10. )
  11. set flag=%%i&set int=%%j&set dec=%%k
  12. )
  13. )
  14. set /a "dec=(1+2*(dec>>31))*dec"
  15. echo;!flag!=!int!.!dec!
  16. pause & exit /b
复制代码
  1. set dec=!dec!00000&set dec=!dec:~,5!&set ndec=%%k00000&set ndec=!ndec:~,5!&set int=!int:*0=!&set nint=%%j&set nint=!nint:*0=!
  2. set /a rst=!nint!!ndec!+!int!!dec!&set int=!rst:~,-5!&set dec=!rst:~-5!
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

再开个bat、JS混编的
  1. @if(0)==(0) echo off&sort "a.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit /b&@end
  2. var content = WScript.StdIn.ReadAll();
  3. var re = {};
  4. content.replace(/([^\s]+)\s+(.*)/g,function($0,$1,$2){
  5. re[$1] = re[$1]?parseFloat(re[$1])+parseFloat($2):$2;
  6. });
  7. for(var i in re) WSH.Echo(i+"="+re[i]);
复制代码
人生是一部书/只有这一页最温暖/读懂它的时候/我们在远方流泪...

TOP

返回列表