|
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 |
|
|
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!)
|
|
2009-4-3 06:25 |
|
|
xycoordinate
中级用户
积分 493
发帖 228
注册 2007-2-16 来自 安徽
状态 离线
|
『第
5 楼』:
唉,批处理不支持浮点运算,也无法进行较大数的计算,弄这个真的好费工夫...
好人!
|
|
2009-4-3 06:30 |
|
|
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 |
|
|
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 |
|
|
sxg9739
新手上路
积分 1
发帖 1
注册 2007-12-11
状态 离线
|
|
2009-5-5 10:47 |
|
|