中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 文本合计计算3 上一主题 | 下一主题
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『楼 主』:  文本合计计算3

jgh.txt

  Quote:
15600
15601
15602
15604
15606
15607
15608
15609
15610
15611
15612
15613
15615
15616
15617

200901.txt

  Quote:
15600_15601 63 77992.00 370687.99  
15600_15602 149 1065654.00 1540899.79  
15600_15604 59 856416.30 1229540.20  
15600_15605 156 842744.63 612520.52  
15600_15606 128 1426332.00 2100760.30  
15600_15607 90 1134164.60 761177.78  
15600_15608 198 1549745.00 2114666.95  
15600_15609 417 585620.91 1602072.51  
15600_15610 499 1380364.00 3225634.50  
15600_15611 98 116438.50 544952.48  
15600_15612 136 850986.00 2610013.65  
15600_15613 116 949689.00 1973142.44  
15600_15615 171 1796545.34 1989385.51  
15600_15616 132 936021.00 1036100.00  
15600_15617 110 1832010.00 8496317.40
  
15601_15600 166 682532.32 1765633.05  
15601_15602 279 1132898.48 2012948.18  
15601_15604 61 284914.00 584958.52  
15601_15605 262 682505.32 963295.55  
15601_15606 224 1156155.91 1419828.21  
15601_15607 170 1026839.89 717955.78  
15601_15608 448 1766171.63 2187517.38  
15601_15609 310 843725.00 1184437.78  
15601_15610 563 1940682.59 3116557.40  
15601_15611 317 1555287.69 922176.88  
15601_15612 180 1289567.62 2849856.49  
15601_15613 116 1291850.00 1698246.67  
15601_15615 365 1129832.59 6295609.09  
15601_15616 72 17660997.31 1477137.61  
15601_15617 115 890627.11 575611.74  
15602_15600 169 2812445.00 2292740.17  
15602_15601 109 541519.71 348616.53  
15602_15604 106 422654.40 621126.42  
15602_15605 134 3218412.35 3282854.55  
15602_15606 170 1701403.87 870946.03  
15602_15607 96 1298415.00 891968.36  
15602_15608 697 2219479.00 6599770.64  
15602_15609 307 2041910.31 419625.21  
15602_15610 346 1366324.38 2731798.18  
15602_15611 143 913700.00 3064429.59  
15602_15612 378 3373102.72 5473440.71  
15602_15613 305 482128.32 1915615.30  
15602_15615 390 883610.00 2491859.17  
15602_15616 56 120345.00 1388771.18  
15602_15617 71 233926.03 633168.00

……

想得到
200901_new.txt

机构 比数 借方 贷方  合计
------------------------------------------------------------
15600_15601 63 77992.00 370687.99  合计
15600_15602 149 1065654.00 1540899.79   合计
15600_15604 59 856416.30 1229540.20   合计
15600_15605 156 842744.63 612520.52   合计
15600_15606 128 1426332.00 2100760.30   合计
15600_15607 90 1134164.60 761177.78   合计
15600_15608 198 1549745.00 2114666.95  合计
15600_15609 417 585620.91 1602072.51   合计
15600_15610 499 1380364.00 3225634.50   合计
15600_15611 98 116438.50 544952.48   合计
15600_15612 136 850986.00 2610013.65  合计
15600_15613 116 949689.00 1973142.44   合计
15600_15615 171 1796545.34 1989385.51   合计
15600_15616 132 936021.00 1036100.00   合计
15600_15617 110 1832010.00 8496317.40  合计
15600_合计 比数合计 借方合计 贷方合计  总合计
……

合计=借方+贷方
总合计= 借方合计+贷方合计
比数合计=比数加总
借方合计=借方加总
贷方合计=贷方加总

每行的后2个数加总
后3列,每列的数加总

[ Last edited by xycoordinate on 2009-4-3 at 05:45 ]

2009-4-2 22:55
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 2 楼』:  

这种事情难道不是用office 软件处理更简单吗




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-4-2 23:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  Re 2楼

批处理可以实现“双击鼠标(放到计划任务里面的话连双击都免了),一切搞定”,Office行么?



2009-4-3 01:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 4 楼』:  

唉,批处理不支持浮点运算,也无法进行较大数的计算,弄这个真的好费工夫...
@echo off
Setlocal Enabledelayedexpansion
set "file=200901.txt"
for /l %%a in (0 1 17) do (
  set var=0%%a
  set /a num1=0,num2=0,num3=0,num4=0,num5=0,zj1=0,zj2=0
  call :lp
)
pause&goto :eof
:lp
for /f "usebackq tokens=1-7 delims=_. " %%b in ("%file%") do (
  set str=%%b&set l5=%%f&set l7=%%h
  call :cut0
  if "!str:~-2!"=="!var:~-2!" (
    set /a num1+=%%d,num2+=%%e,num3+=l5,num4+=%%g,num5+=l7,hj1=%%e+%%g,hj2=l5+l7
    if not "!hj2:~0,-2!"=="" (set /a hj1+=!hj2:~0,-2!)
    set hj2=0!hj2!
    echo.%%b_%%c  %%d  %%e.%%f  %%g.%%h  !hj1!.!hj2:~-2!
  )
)
set /a num2+=!num3:~0,-2!,num4+=!num5:~0,-2!,zj1=num2+num4,zj2=num3+num5
if not "!zj2:~0,-2!"=="" (set /a zj1+=!zj2:~0,-2!)
echo.
echo.156!var:~-2!_合计  !num1! !num2!.!num3:~-2!  !num4!.!num5:~-2!  !zj1!.!zj2:~-2!
echo.
goto :eof
:cut0
if "!l5:~0,1!"=="0" (set l5=!l5:~1!)
if "!l7:~0,1!"=="0" (set l7=!l7:~1!)


   此帖被 +4 点积分        点击查看详情   
评分人:【 xycoordinate 分数: +4  时间:2009-4-3 06:39


2009-4-3 06:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




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

唉,批处理不支持浮点运算,也无法进行较大数的计算,弄这个真的好费工夫...



好人!

2009-4-3 06:30
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 6 楼』:  

我倒,是谁想用OFFICE 双击鼠标了
这种事情难道不应该考虑用VBA
不至于什么事情都考虑用批处理实现吧




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-4-3 07:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




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

学习,自己写了个bat(还要完善)

  Quote:
@echo off&setlocal enabledelayedexpansion

for /f %%i in (jgh.txt) do (
  set var=%%i

REM 注意"delims=_ "
  for /f "tokens=1-5 delims=_ " %%a in (200901.txt) do (
    set jgh=%%a

    set str1=%%c
    set str2=%%d
    set str3=%%e

    set str2=!str2:.=!
    set str3=!str3:.=!

    set /a jd=!str2!+!str3!

    if "!jgh!"=="!var!" (
      set /a bs+=!str1!,jf+=!str2!,df+=!str3!
      set /a hj=!jf!+!df!
      echo %%a_%%b %%c %%d %%e !jd!
    )

  )
  echo !var!_cxtdb !bs! !jf! !df! !hj!
  echo.

  set bs=0&set jf=0&set df=0&set hj=0

)

endlocal

pause

得到的结果是

  Quote:
15600_15601 63 77992.00 370687.99 44867999
15600_15602 149 1065654.00 1540899.79 260655379
15600_15604 59 856416.30 1229540.20 208595650
15600_15605 156 842744.63 612520.52 145526515
15600_15606 128 1426332.00 2100760.30 352709230
15600_15607 90 1134164.60 761177.78 189534238
15600_15608 198 1549745.00 2114666.95 366441195
15600_15609 417 585620.91 1602072.51 218769342
15600_15610 499 1380364.00 3225634.50 460599850
15600_15611 98 116438.50 544952.48 66139098
15600_15612 136 850986.00 2610013.65 346099965
15600_15613 116 949689.00 1973142.44 292283144
15600_15615 171 1796545.34 1989385.51 378593085
15600_15616 132 936021.00 1036100.00 197212100
15600_15617 110 1832010.00 8496317.40 1032832740
15600_cxtdb 2522 1540072328 -1274180094 265892234

15601_15600 166 682532.32 1765633.05 244816537
15601_15602 279 1132898.48 2012948.18 314584666
15601_15604 61 284914.00 584958.52 86987252
15601_15605 262 682505.32 963295.55 164580087
15601_15606 224 1156155.91 1419828.21 257598412
15601_15607 170 1026839.89 717955.78 174479567
15601_15608 448 1766171.63 2187517.38 395368901
15601_15609 310 843725.00 1184437.78 202816278
15601_15610 563 1940682.59 3116557.40 505723999
15601_15611 317 1555287.69 922176.88 247746457
15601_15612 180 1289567.62 2849856.49 413942411
15601_15613 116 1291850.00 1698246.67 299009667
15601_15615 365 1129832.59 6295609.09 742544168
15601_15616 72 17660997.31 1477137.61 1913813492
15601_15617 115 890627.11 575611.74 146623885
15601_cxtdb 3648 -961508550 -1517790263 1815668483

15602_15600 169 2812445.00 2292740.17 510518517
15602_15601 109 541519.71 348616.53 89013624
15602_15604 106 422654.40 621126.42 104378082
15602_15605 134 3218412.35 3282854.55 650126690
15602_15606 170 1701403.87 870946.03 257234990
15602_15607 96 1298415.00 891968.36 219038336
15602_15608 697 2219479.00 6599770.64 881924964
15602_15609 307 2041910.31 419625.21 246153552
15602_15610 346 1366324.38 2731798.18 409812256
15602_15611 143 913700.00 3064429.59 397812959
15602_15612 378 3373102.72 5473440.71 884654343
15602_15613 305 482128.32 1915615.30 239774362
15602_15615 390 883610.00 2491859.17 337546917
15602_15616 56 120345.00 1388771.18 150911618
15602_15617 71 233926.03 633168.00 86709403
15602_cxtdb 3477 -2132029687 -992294292 1170643317

红字的是否是数字太大导致的?
如何解决???


[ Last edited by xycoordinate on 2009-4-4 at 03:11 ]

2009-4-4 03:02
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 8 楼』:  一个浮点加法函数,速度还可以

为什么只支持49位有效数呢?为了速度,再说,多了也没意义
自动丢弃头尾无效的0
@echo off
set aa=%1
set bb=%2

::调用浮点加法函数
call :add cc aa bb

echo %cc%
goto :eof

:add
::浮点数加法函数,头尾都可带0,支持49位整数,49位小数。
::第一个参数为接收变量名,第二、三个为相加数变量名。
@echo off&setlocal enabledelayedexpansion
if not defined %3 set cc=!%2!&goto :endok
if not defined %2 set cc=!%3!&goto :endok
set za=!%2:*.=!
set xa=!%2:.%za%=!
set zb=!%3:*.=!
set xb=!%3:.%zb%=!
if "!zb!."=="!%3!." set zb=0
if "!za!."=="!%2!." set za=0
set za=%za%0
set zb=%zb%0
set zm=0
for /l %%a in (0,9,81) do (
        if "!za:~%%a,9!!zb:~%%a,9!"=="" goto :xok
        set "za%%a=!za:~%%a,9!000000000"
        set "zb%%a=!zb:~%%a,9!000000000"
        set za%%a=1!za%%a:~0,9!
        set zb%%a=1!zb%%a:~0,9!
        set zm=%%a
)
:xok
set zy=0
for /l %%a in (%zm%,-9,0) do (
        set/a "zz=!zy:~0,-9!+za%%a-1000000000+zb%%a-1000000000"
        set zy=000000000!zz!
        set zx=!zy:~-9!!zx!
)
set/a zm+=9,n=zm
for /l %%a in (1,1,%zm%) do if "!zx:~-%%a,1!"=="0" (set n=-%%a) else (goto :cok)
:cok
if "!zx:~-%zm%,%n%!" gtr "0" (set cc=.!zx:~-%zm%,%n%!) else (set cc=)

set zy=
for /l %%a in (9,9,81) do (
        if "!xa!!xb!"=="" goto :end
        set cc=!zy!!cc!
if defined xa (set "aa=000000000!xa:~-9!"&set xa=!xa:~0,-9!) else (set aa=000000000)
if defined xb (set "bb=000000000!xb:~-9!"&set xb=!xb:~0,-9!) else (set bb=000000000)
        set/a zz=!zz:~0,-9!+1!bb:~-9!-1000000000+1!aa:~-9!-1000000000
        set zy=000000000!zz!
        set zy=!zy:~-9!
)
:end
set cc=%zz%%cc%
if "%cc%"=="0" goto :endok
if "%cc:~0,2%"=="0." goto :endok
for /l %%a in (0,1,36) do if not "!cc:~%%a,1!"=="0" (set cc=!cc:~%%a!&goto :endok)
:endok
endlocal&set %1=%cc%&goto :eof
[ Last edited by netbenton on 2009-4-5 at 10:08 ]



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-4-5 12:07
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
sxg9739
新手上路





积分 1
发帖 1
注册 2007-12-11
状态 离线
『第 9 楼』:  

楼上的都厉害。

2009-5-5 10:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: