[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
学习了 先计算位数  这样小数可以不考虑其位数
  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.        for /l %%d in (1 1 !n!) do set mn=!mn!0
  8.          for %%d in (!var1!) do (
  9.              set/a t+=1
  10.              set var2=%%d!mn!
  11.              call set var2=%%var2:~,!n!%%
  12.              >>test.xls call echo %%.!t!%%
  13.              call set/a num+=%%_!t!%%!var2!
  14.              )
  15.        call set num=%%num:~,-!n!%%.%%num:~-!n!%%
  16.        >>test.xls echo %%a:%%b        !num!
  17.     for %%i in (n m var1 num mn t) do set %%i=
  18.   ) else (
  19.     for /f "tokens=1* delims=." %%i in ("%%c") do (
  20.        set /a m+=1
  21.          set "_!m!=%%i"
  22.            set ".!m!=%%b                %%c"
  23.            if not "%%j"=="" (
  24.            set var1=!var1! %%j
  25.            for /f "delims=:" %%l in ('^(echo %%j^&echo.^)^|findstr /o ".*"') do set/a s=%%l-3
  26.            if !s! gtr !n! set/a n=s
  27.          ) else set var1=!var1! 0
  28.        )
  29.      )
  30.    )
  31. )
复制代码
1

评分人数

TOP

原帖由 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

返回列表