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

回复 15楼 的帖子

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

TOP

回复 16楼 的帖子

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

TOP

  1. @echo off
  2. for %%. in (张三 李四 王五 赵六) do call :ca %%.
  3. start b.txt
  4. exit
  5. :ca
  6. setlocal enabledelayedexpansion
  7. if exist b.txt for /f "tokens=1-3 delims= " %%i in (b.txt) do set n=%%i
  8. 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)
  9. set/a n+=1&&echo !n! 合计 %m% >>b.txt
  10. goto :eof
复制代码

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

评分人数

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

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2 delims= " %%i in (a.txt) do (
  4. if "%%i"=="张三" set /a zs+=%%j && echo %%i %%j>>张三.txt
  5. if "%%i"=="李四" set /a ls+=%%j && echo %%i %%j>>李四.txt
  6. if "%%i"=="王五" set /a ww+=%%j && echo %%i %%j>>王五.txt
  7. if "%%i"=="赵六" set /a zl+=%%j && echo %%i %%j>>赵六.txt
  8. )
  9. echo 合计 !zs!>>张三.txt
  10. echo 合计 !ls!>>李四.txt
  11. echo 合计 !ww!>>王五.txt
  12. echo 合计 !zl!>>赵六.txt
  13. (for /f "delims=" %%i in (张三.txt 李四.txt 王五.txt 赵六.txt) do (
  14. set /a i+=1
  15. echo !i! %%i
  16. ))>b.txt
  17. del 张三.txt 李四.txt 王五.txt 赵六.txt
  18. start b.txt
复制代码
1

评分人数

TOP

  1. @echo off
  2. Setlocal EnableDelayedExpansion
  3. set "str=张三 李四 王五 赵六"
  4. for /f "tokens=1,2" %%i in (a.txt) do ( set "%%i=!%%i! %%j" )
  5. set num=1
  6. for %%i in (%str%) do (
  7.     set sum=0
  8.     for %%j in (!%%i!) do ( echo !num!   %%i        %%j>>b.txt & set /a num+=1 & set /a sum+=%%j )
  9.     echo !num!   总计        !sum!>>b.txt & set /a num+=1
  10. )
复制代码

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

返回列表