[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (a.txt) do (
  3. set "str=%%i"
  4. set /a h+=1
  5. if "!str:~0,4!"=="+++第" (
  6. set m=1
  7. if !m! equ 1 set /a n=11-h
  8. set h=0
  9. if !n! gtr 0 (
  10. if defined i for /l %%a in (1 1 !n!) do echo;
  11. set /a m=0,i=0
  12. )
  13. )
  14. echo %%i
  15. ))>b.txt
  16. set /a n=10-h
  17. (for /l %%a in (1 1 !n!) do echo;)>>b.txt
  18. echo ok
  19. pause
复制代码
1

评分人数

TOP

谈谈看法
2楼兄弟的代码应该是效率最高的设计,但为了能正确处理最后一个 +++第 的组,用了type 导致速度被拉下不知多少倍,估计他事先不知道是海量数据,否则把最后一个组放到for外面来处理就ok了。

3楼代码,用到了findstr 不用说和type一样,效率低下,更甚者还用到了管道、及find 速度应该慢的无法忍受。

4楼代码,虽说没用外部命令也没用管道,可不是在一次for循环中完成的,效率应该也是大打折扣。
光是最后一组for运行的次数就是 76500*11 够受的。估计也是事先不知道要处理的数据量如此巨大。

总的来说,用bat来处理这样的大数据效率都不可能理想,建议用第三方工具,如 gawk 等。。

TOP

返回列表