中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 21:16
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文本合并计算2(问题已经基本解决,还有疑惑?) 查看 1,116 回复 7
楼 主 文本合并计算2(问题已经基本解决,还有疑惑?) 发表于 2008-05-29 19:24 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
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 ]
2 发表于 2008-05-29 19:31 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
for /l %a in (1 1 9)do findstr/b 1560%a *.txt&pause
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
3 发表于 2008-05-30 14:05 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
根据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 ]
4 疑惑 发表于 2008-05-30 14:19 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线

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 ]
5 发表于 2008-05-30 16:32 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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的行。
批处理之家新域名:www.bathome.net
6 发表于 2008-05-30 17:52 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
Originally posted by zw19750516 at 2008-5-30 16:32:

if definded str1可以这样理解如果发现不为空值的变量str1,在以上代码中如去掉这一句将会显示出如: 0 借/贷 0的行。



原来如此!

谢谢!
7 发表于 2008-05-30 20:57 ·  中国 陕西 西安 电信
初级用户
积分 69
发帖 34
注册 2008-05-29 13:39
18年会员
UID 120000
性别 男
状态 离线
有必要好好研究研究!
8 发表于 2008-06-19 14:57 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 493
发帖 228
注册 2007-02-16 00:38
19年会员
UID 79596
性别 男
来自 安徽
状态 离线
还有再加总15600和15601

???
论坛跳转: