中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文本合并计算2(问题已经基本解决,还有疑惑?)
作者:
标题: 文本合并计算2(问题已经基本解决,还有疑惑?) 上一主题 | 下一主题
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『楼 主』:  文本合并计算2(问题已经基本解决,还有疑惑?)

text1.txt

  Quote:
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

  Quote:
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 ]

2008-5-29 19:24
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

for /l %a  in (1 1 9)do findstr/b 1560%a *.txt&pause



山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
2008-5-29 19:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 3 楼』:  

根据zw19750516的方法

  Quote:
@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

  Quote:
@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

  Quote:
机构 笔数 借贷 金额
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 ]

2008-5-30 14:05
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 4 楼』:  疑惑



  Quote:
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 ]

2008-5-30 14:19
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 5 楼』:  



  Quote:
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
2008-5-30 16:32
查看资料  发送邮件  发短消息 网志  OICQ (841615149)  编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-5-30 16:32:

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

原来如此!

谢谢!

2008-5-30 17:52
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
wangzenggogo
初级用户





积分 69
发帖 34
注册 2008-5-29
状态 离线
『第 7 楼』:  

有必要好好研究研究!

2008-5-30 20:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 8 楼』:  

还有再加总15600和15601

???

2008-6-19 14:57
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: