返回列表 发帖

回复 15楼 的帖子

对文本进行了多次循环,影响效率,再改改,争取只循环一次 (^_^)
技术问题请到论坛发帖求助!

TOP

回复 16楼 的帖子

再改,就跟batman的代码一样了,先对整个文本过一遍把数字全部赋给变量。这样只对文本进行一次循环。
看来最佳答案只能类似batman的了。
(*^_^*)

TOP

@echo off
for %%. in (张三 李四 王五 赵六) do call :ca %%.
start b.txt
exit
:ca
setlocal enabledelayedexpansion
if exist b.txt for /f "tokens=1-3 delims= " %%i in (b.txt) do set n=%%i
for /f "tokens=1-3 delims=: " %%a in ('findstr /n %1 a.txt') do (set/a n+=1&set/a m+=%%c&&>>b.txt echo !n! %1 %%c)
set/a n+=1&&echo !n! 合计 %m% >>b.txt
goto :eofCOPY

[ 本帖最后由 dali 于 2009-6-10 21:12 编辑 ]
1

评分人数

    • batman: 效率,还是效率问题!PB + 5

TOP

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims= " %%i in (a.txt) do (
if "%%i"=="张三" set /a zs+=%%j && echo %%i %%j>>张三.txt
if "%%i"=="李四" set /a ls+=%%j && echo %%i %%j>>李四.txt
if "%%i"=="王五" set /a ww+=%%j && echo %%i %%j>>王五.txt
if "%%i"=="赵六" set /a zl+=%%j && echo %%i %%j>>赵六.txt
)
echo 合计 !zs!>>张三.txt
echo 合计 !ls!>>李四.txt
echo 合计 !ww!>>王五.txt
echo 合计 !zl!>>赵六.txt
(for /f "delims=" %%i in (张三.txt 李四.txt 王五.txt 赵六.txt) do (
set /a i+=1
echo !i! %%i
))>b.txt
del 张三.txt 李四.txt 王五.txt 赵六.txt
start b.txtCOPY
1

评分人数

TOP

@echo off
Setlocal EnableDelayedExpansion
set "str=张三 李四 王五 赵六"
for /f "tokens=1,2" %%i in (a.txt) do ( set "%%i=!%%i! %%j" )
set num=1
for %%i in (%str%) do (
    set sum=0
    for %%j in (!%%i!) do ( echo !num!   %%i        %%j>>b.txt & set /a num+=1 & set /a sum+=%%j )
    echo !num!   总计        !sum!>>b.txt & set /a num+=1
)COPY

TOP

@echo off&setlocal enabledelayedexpansion
(for %%a in (张三 李四 王五 赵六) do (
   set /a sum=0
   set /a cout=0
   for /f "tokens=1,2 delims= " %%i in (a.txt) do (
      if "%%i"=="%%a" (
      set /a cout+=1
      echo !cout!        %%i        %%j
      set /a sum+=%%j)
   )
set /a cout+=1
echo,!cout!        合计        !sum!
))>b.txt
pause
Fit Strong

TOP

返回列表