Board logo

标题: 文本合并计算2(问题已经基本解决,还有疑惑?) [打印本页]

作者: xycoordinate     时间: 2008-5-29 19:24    标题: 文本合并计算2(问题已经基本解决,还有疑惑?)

text1.txt
15600_20080525_01.p106_prt 15600_15601 6 贷 -4341.00 15600_15602 2 借 20245.00 15600_15604 8 贷 -30310.00 15600_15605 1 贷 -3000.00 15600_15606 1 借 20.00 15600_15607 3 贷 -2700.00 15600_15608 1 贷 -20000.00 15600_15609 9 借 57650.24 15600_15610 4 借 68859.00 15600_15611 1 贷 -780.00 15600_15612 4 借 15540.00 15600_15613 2 贷 -3895.00 15600_15615 7 贷 -25560.00 15600_15617 1 借 500.00 15600_合计 50 借 72228.24 15601_20080525_prt 15601_15600 4 贷 -91000.00 15601_15602 4 贷 -65150.00 15601_15604 5 借 4970.00 15601_15605 2 借 7340.00 15601_15606 2 借 1000.00 15601_15607 2 借 900.00 15601_15608 1 借 690.00 15601_15609 1 借 970.00 15601_15611 4 借 6800.00 15601_15612 2 借 73500.00 15601_15613 1 借 500.00 15601_15615 3 借 2190.00 15601_15616 1 贷 -105.00 15601_合计 32 贷 -57395.00
text2.txt
15600_20080526_01.p106_prt 15600_15601 9 借 44114.00 15600_15604 25 贷 -295670.00 15600_15605 2 借 303000.00 15600_15606 2 贷 -10000.00 15600_15607 1 借 45000.00 15600_15608 2 借 10320.00 15600_15609 2 借 526.00 15600_15610 4 贷 -44560.00 15600_15611 1 贷 -2300.00 15600_15612 5 贷 -3250.00 15600_15613 1 贷 -3003.00 15600_15615 4 借 31800.00 15600_15616 6 借 40990.00 15600_合计 64 借 116967.00 15601_20080526_01.1a1_prt 15601_15600 3 借 22900.00 15601_15602 2 贷 -8000.00 15601_15604 19 借 33560.00 15601_15605 5 借 9053.00 15601_15606 5 借 30247.03 15601_15607 8 借 62750.00 15601_15608 1 借 450.00 15601_15609 3 贷 -390.00 15601_15610 5 借 15600.00 15601_15611 3 借 6400.00 15601_15612 1 借 840.00 15601_15613 2 借 28400.00 15601_15615 3 贷 -48200.00 15601_合计 60 借 153610.03
想得到结果: text1.txt和text.txt相同的字段1,相加字段2和字段4 1. 15600_200805 15600_15601 * * * 15600_15602 * * * 15600_15604 * * * 15600_15605 * * * 15600_...... 15600_15617 * * * 15600_合计...... 2. 15601_200805 15601_15601 * * * 15601_15602 * * * 15601_15604 * * * 15601_15605 * * * 15601_...... 15601_15617 * * * 15601_合计...... 3. 15602_200805 15602_...... 15602_...... 4. ...... 注: 每月统计本机构代理其他机构的业务量 共16个机构(没有15603,15614) [ Last edited by xycoordinate on 2008-5-30 at 02:26 PM ]

作者: plp626     时间: 2008-5-29 19:31
for /l %a in (1 1 9)do findstr/b 1560%a *.txt&pause

作者: xycoordinate     时间: 2008-5-30 14:05
根据zw19750516的方法
@echo off&setlocal enabledelayedexpansion echo 机构 笔数 借贷 金额 for /l %%i in (15600,1,15617) do call :lp %%i echo 合计 !bi! !借贷! !num!.00 pause>nul&goto :eof :lp for /f "tokens=1,2,3,4 delims= " %%i in (1.txt) do ( if %%i equ %1 ( set str1=%%i&set a=%%l&set a=!a:-=!&set a=!a:~,-3! if "%%k" equ "贷" ( set /a str2+=%%j,str4-=!a!,bi+=%%j,num-=!a! ) else ( set /a str2+=%%j,str4+=!a!,bi+=%%j,num+=!a! ) if !str4! leq 0 ( set str3=货 ) else ( set str3=借 ) ) ) if defined str1 echo !str1! !str2! !str3! !str4!.00 set str1=&set str2=0&set str3=&set str4=0
我修改了一下,得到的结果基本符合要求!!! test.bat
@echo off&setlocal enabledelayedexpansion echo 机构 笔数 借贷 金额 for /f %%i in (jgh.txt) do ( set jgh1=%%i for /f %%I in (jgh.txt) do ( set jgh2=%%I if !jgh1! NEQ !jgh2! set JG=!jgh1!_!jgh2! for /f "tokens=1,2,3,4" %%i in (text.txt) do ( if %%i equ !JG! ( set str1=%%i set a=%%l set a=!a:.=! set /a str2+=%%j,str4+=!a!,bi+=%%j,num+=!a! if !str4! leq 0 ( set str3=货 ) else ( set str3=借 ) ) ) if defined str1 echo !str1! !str2! !str3! !str4! set str1=&set str2=0&set str3=&set str4=0 ) )
CMD>copy text1.txt+text2.txt text.txt CMD>test.bat
机构 笔数 借贷 金额 15600_15601 15 借 3977300 15600_15602 2 借 2024500 15600_15604 33 货 -3259800 15600_15605 3 借 30000000 15600_15606 3 货 -998000 15600_15607 4 借 4230000 15600_15608 3 货 -968000 15600_15609 11 借 5817624 15600_15610 8 借 2429900 15600_15611 2 货 -308000 15600_15612 9 借 1229000 15600_15613 3 货 -689800 15600_15615 11 借 624000 15600_15616 6 借 4099000 15600_15617 1 借 50000 15601_15600 7 货 -6810000 15601_15600 7 货 -6810000 15601_15602 6 货 -7315000 15601_15604 24 借 3853000 15601_15605 7 借 1639300 15601_15606 7 借 3124703 15601_15607 10 借 6365000 15601_15608 2 借 114000 15601_15609 4 借 58000 15601_15610 5 借 1560000 15601_15611 7 借 1320000 15601_15612 3 借 7434000 15601_15613 3 借 2890000 15601_15615 6 货 -4601000 15601_15616 1 货 -10500
[ Last edited by xycoordinate on 2008-5-30 at 02:17 PM ]

作者: xycoordinate     时间: 2008-5-30 14:19    标题: 疑惑

if defined str1 echo !str1! !str2! !str3! !str4!
if defined ??? 不明白? 能解释一下吗? if /? ...... IF DEFINED variable command 如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样, 除了它取得一个环境变量,返回的结果是 true。 ...... [ Last edited by xycoordinate on 2008-5-30 at 02:23 PM ]

作者: bat-zw     时间: 2008-5-30 16:32
Originally posted by xycoordinate at 2008-5-30 14:19: if defined ??? 不明白? 能解释一下吗? if /? ...... IF DEFINED variable command 如果已定义环境变量,DEFINED 条件的作用跟 EXI ...
if definded str1可以这样理解如果发现不为空值的变量str1,在以上代码中如去掉这一句将会显示出如: 0 借/贷 0的行。

作者: xycoordinate     时间: 2008-5-30 17:52
Originally posted by zw19750516 at 2008-5-30 16:32: if definded str1可以这样理解如果发现不为空值的变量str1,在以上代码中如去掉这一句将会显示出如: 0 借/贷 0的行。
原来如此! 谢谢!

作者: wangzenggogo     时间: 2008-5-30 20:57
有必要好好研究研究!

作者: xycoordinate     时间: 2008-6-19 14:57
还有再加总15600和15601 ???