[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
原帖由 batman 于 2008-12-16 17:20 发表

trese兄是不是写得复杂了点。。。。

确实如兄所言  
计算位数 且分步了 然后补位  
效率都给了计算位数  不考虑位数代码效率似乎可提高些许
发个 小数点后5位的
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1-3 delims=    " %%a in ('type "test.xls"') do (
  3.   if not defined flag (
  4.      echo %%b        %%c>test.xls&set "flag=a"
  5.      ) else (
  6.        if "%%c"=="" (
  7.        >>test.xls echo %%a:%%b    !num:~,-5!.!num:~-5!
  8.        set num=
  9.      ) else (
  10.        >>test.xls echo %%b        %%c
  11.        set str=%%c
  12.        set str1=!str:*.=!
  13.        if "!str1!"=="%%c" set str1=
  14.        call set str2=%%str:.!str1!=%%
  15.        set str1=!str1!00000
  16.        set str1=!str1:~,5!
  17.        set/a num+=!str2!!str1!
  18.      )
  19.    )
  20. )
  21. pause
复制代码

[ 本帖最后由 terse 于 2008-12-16 22:23 编辑 ]

TOP

  1. @echo on &setlocal enabledelayedexpansion
  2. set/a m=2,n=-1
  3. for /f "tokens=1-3 delims=        " %%i in (test.xls) do (
  4.         set/a n+=1
  5.         if !n!==0 (>test.xls echo %%j        %%k) else (
  6.                 if "%%j"=="total" (
  7.                 >>test.xls echo %%i:%%j        =sum(b!m!:b!n!^)
  8.                 set/a m=n+2
  9.                 ) else (
  10.                 >>test.xls echo %%j        %%k
  11.                 )
  12.         )
  13. )
  14. exit
复制代码
echo以及delims后面的空格都是一个TAB字符.顺便问问各位老大,怎么用p把数据写进已经排版的xls文件(比如居中,改变了列宽等)中呢?

[ 本帖最后由 qlcom 于 2008-12-18 20:15 编辑 ]
1

评分人数

TOP

原帖由 qlcom 于 2008-12-18 20:01 发表
@echo on &setlocal enabledelayedexpansion
set/a m=2,n=-1
for /f "tokens=1-3 delims=        " %%i in (test.xls) do (
        set/a n+=1
        if !n!==0 (>test.xls echo %%j        %%k) else (
    ...

set/a m=n+2 兄弟可以仔细看下文件是没有规律的,但你这种方法确是可取的,利用xls的函数公式,好!为这思路加分。
***共同提高***

TOP

原帖由 batman 于 2008-12-19 08:19 发表

set/a m=n+2 兄弟可以仔细看下文件是没有规律的,但你这种方法确是可取的,利用xls的函数公式,好!为这思路加分。


谁说没规律,total占一行(而去掉第一行后,除了total所在的行以外都要参加计算),下一个计算起点比起上一个计算终点的行数刚好相差2,顺便麻烦楼主帮我在本版求问的帖子解下锁,谢谢!

TOP

加减法的运算就按照大数的写法就行了.
小数点后面补0到相等长度.在计算. 判断是否有进位.之后在处理整数..整数我想个人的工资不会有超过8位数的人才吧.
所以整体思路. 区分整数和小数,,小数补0至2数相等长度.在按大数四则计算小数.

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. cd.>_new.xls
  3. ::解题思路为提升小数为整数
  4. for /f "tokens=1,2,3 delims= " %%i in (test.xls) do (
  5. if "%%j" equ "total" (
  6. echo %%i %%j !_%%i:~0,-2!.!_%%i:~-2!>>_new.xls
  7. ) else (
  8. echo %%i %%j %%k>>_new.xls
  9. set _tmp=%%k
  10. set /a _decimal=!_tmp:.=*0+!
  11. set /a "_%%i+= _decimal + _tmp*100"
  12. )
  13. )
  14. pause
复制代码
非常批处理3群:56794763
有偿写程序.
批处理, lua, c, c++, vba, php, css

TOP

返回列表