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

[数值计算] 批处理如何将文本中的数据相加?

[复制链接]
发表于 2014-12-27 20:22:05 | 显示全部楼层 |阅读模式
如题,a.txt内容如下:

120*80*4000=25
120*80*4000=10
120*80*4000=50
如何输出结果:120*80*4000=85 到 b.txt中,求高人帮忙。
行数最多为15行.
在此先行多谢。
发表于 2014-12-27 22:47:10 | 显示全部楼层
S.TXT文本内容如下
120*80*4000=25
120*80*4000=10
120*80*4000=50
批处理文本如下

set num=0
for /f "tokens=2 delims==" %%i in (s.txt) do (
set /a num+=%%i
)
echo 120*80*4000=%num% >b.txt

b.txt为你要的保存结果的文件
 楼主| 发表于 2014-12-28 19:46:56 | 显示全部楼层
本帖最后由 shenlong 于 2014-12-28 20:03 编辑

回复 2# c755731262


    多谢了,再请教一下,如果s.txt中的内容如下:
120*80*4000=25
120*80*4000=10
120*80*4000=50
60*80*3000=12
60*80*3000=6
能不能输出120*80*4000=85
                60*80*3000=18 到 b.txt中?
发表于 2014-12-28 21:28:26 | 显示全部楼层
回复 3# shenlong
  1. @echo off
  2. for /f "tokens=1-4 delims=*=" %%i in (s.txt) do (
  3.     set /a "_%%i_%%j_%%k+=%%l"
  4. )
  5. (for /f "tokens=1-3 delims=_" %%i in ('set _') do (
  6.     echo %%i*%%j*%%k
  7. ))>b.txt
复制代码
发表于 2014-12-28 22:29:43 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,2 delims==" %%i in (s.txt) do (
  3.     if defined %%i (
  4.        set "t=!%%i!"
  5.        set /a "$!t!+=%%j"
  6.     ) else (
  7.             set "%%i=!n!"
  8.             set /a n+=1
  9.             set "#!n!=%%i"
  10.             set "$!n!=%%j"
  11.       )
  12. )
  13. (for /l %%i in (1 1 !n!) do (
  14.     echo,!#%%i!=!$%%i!
  15. ))>b.txt

  16. pause
复制代码
发表于 2014-12-29 10:26:20 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1-2 delims==" %%a in ('sort a.txt') do (
  3.     if not "!str!"=="%%a" (
  4.             if defined n echo,!str!=!n!
  5.             set "n="
  6.     )
  7.    set/an+=%%b
  8.    set "str=%%a"
  9. )
  10. echo,!str!=!n!)>b.txt
复制代码
 楼主| 发表于 2014-12-29 19:49:02 | 显示全部楼层
多谢各位的帮助,问题解决了,再次感谢!
发表于 2015-1-25 11:50:12 | 显示全部楼层
回复 4# DAIC


    請教大師 /f "tokens=1-3 delims=_" %%i in ('set _')

in ('set _') 用法,想了很久還是不懂...
发表于 2015-1-25 13:53:07 | 显示全部楼层
本帖最后由 慕夜蓝化 于 2015-1-25 13:55 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. For /f "tokens=1,2 delims==" %%i in (a.txt) do (
  3.     set "str=%%i"&set "n=%%j"
  4.     if "!str!"=="!sri!" (
  5.         set/a _!str:~,2!+=!n!&set "n=0"
  6.     ) else (
  7.         set/a _!str:~,2!+=!n!
  8.     )
  9.     set "sri=%%i"
  10. )
  11. (For /f "tokens=1-2 delims=_=" %%i in ('set _') do (
  12.     for /f "tokens=1-2 delims==" %%a in ('findstr /i /b "%%i" "a.txt"') do (
  13.     set/a n+=1
  14.     if !n! equ 1 echo,%%a=%%j
  15.     )
  16.     set "n="
  17. )) >b.txt
  18. pause
复制代码
感觉太偏了。总是把问题想的太复杂。
发表于 2015-1-26 08:47:13 | 显示全部楼层
  1. @echo off&color f0
  2. set /a m=n=0
  3. for /f "tokens=1,2 delims==" %%i in (s.txt) do (
  4. if "%%i"=="120*80*4000" set /a m+=%%j
  5. if "%%i"=="60*80*3000" set /a n+=%%j
  6. )
  7. echo 120*80*4000=%m%>b.txt
  8. echo 60*80*3000=%n%>>b.txt
复制代码
回复 3# shenlong
发表于 2015-1-26 08:48:40 | 显示全部楼层
回复 8# patrickju


    set _ 显示以这个符号开头的变量
发表于 2015-1-26 12:42:42 | 显示全部楼层
回复 8# patrickju


帮助文档里面有例子:
    SET P
会显示所有以字母 P 打头的变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 19:10 , Processed in 0.074163 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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