标题: [数值计算] 批处理如何将文本中的数据相加? [打印本页]
作者: shenlong 时间: 2014-12-27 20:22 标题: 批处理如何将文本中的数据相加?
如题,a.txt内容如下:
120*80*4000=25
120*80*4000=10
120*80*4000=50
如何输出结果:120*80*4000=85 到 b.txt中,求高人帮忙。
行数最多为15行.
在此先行多谢。
作者: c755731262 时间: 2014-12-27 22:47
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为你要的保存结果的文件
作者: shenlong 时间: 2014-12-28 19:46
本帖最后由 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中?
作者: DAIC 时间: 2014-12-28 21:28
回复 3# shenlong - @echo off
- for /f "tokens=1-4 delims=*=" %%i in (s.txt) do (
- set /a "_%%i_%%j_%%k+=%%l"
- )
- (for /f "tokens=1-3 delims=_" %%i in ('set _') do (
- echo %%i*%%j*%%k
- ))>b.txt
复制代码
作者: terse 时间: 2014-12-28 22:29
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims==" %%i in (s.txt) do (
- if defined %%i (
- set "t=!%%i!"
- set /a "$!t!+=%%j"
- ) else (
- set "%%i=!n!"
- set /a n+=1
- set "#!n!=%%i"
- set "$!n!=%%j"
- )
- )
- (for /l %%i in (1 1 !n!) do (
- echo,!#%%i!=!$%%i!
- ))>b.txt
-
- pause
复制代码
作者: xxpinqz 时间: 2014-12-29 10:26
- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=1-2 delims==" %%a in ('sort a.txt') do (
- if not "!str!"=="%%a" (
- if defined n echo,!str!=!n!
- set "n="
- )
- set/an+=%%b
- set "str=%%a"
- )
- echo,!str!=!n!)>b.txt
复制代码
作者: shenlong 时间: 2014-12-29 19:49
多谢各位的帮助,问题解决了,再次感谢!
作者: patrickju 时间: 2015-1-25 11:50
回复 4# DAIC
請教大師 /f "tokens=1-3 delims=_" %%i in ('set _')
in ('set _') 用法,想了很久還是不懂...
作者: 慕夜蓝化 时间: 2015-1-25 13:53
本帖最后由 慕夜蓝化 于 2015-1-25 13:55 编辑
- @echo off&setlocal enabledelayedexpansion
- For /f "tokens=1,2 delims==" %%i in (a.txt) do (
- set "str=%%i"&set "n=%%j"
- if "!str!"=="!sri!" (
- set/a _!str:~,2!+=!n!&set "n=0"
- ) else (
- set/a _!str:~,2!+=!n!
- )
- set "sri=%%i"
- )
- (For /f "tokens=1-2 delims=_=" %%i in ('set _') do (
- for /f "tokens=1-2 delims==" %%a in ('findstr /i /b "%%i" "a.txt"') do (
- set/a n+=1
- if !n! equ 1 echo,%%a=%%j
- )
- set "n="
- )) >b.txt
- pause
复制代码
感觉太偏了。总是把问题想的太复杂。
作者: c755731262 时间: 2015-1-26 08:47
- @echo off&color f0
- set /a m=n=0
- for /f "tokens=1,2 delims==" %%i in (s.txt) do (
- if "%%i"=="120*80*4000" set /a m+=%%j
- if "%%i"=="60*80*3000" set /a n+=%%j
- )
- echo 120*80*4000=%m%>b.txt
- echo 60*80*3000=%n%>>b.txt
复制代码
回复 3# shenlong
作者: c755731262 时间: 2015-1-26 08:48
回复 8# patrickju
set _ 显示以这个符号开头的变量
作者: DAIC 时间: 2015-1-26 12:42
回复 8# patrickju
帮助文档里面有例子:
SET P
会显示所有以字母 P 打头的变量
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |