本帖最后由 aloha20200628 于 2024-3-21 21:19 编辑
用8万行数据文件测试获取文件总行数,结果是find方法比纯P循环遍历方法至少快了20倍
如果输出文件末尾无须空行,可将第4行代码中的&echo,删除
保全源文件中空行虽对本帖题型无实际意义,但对其他应用场合可能是必须...作为通用范式还是给一个力求全速的纯P版本如下- @echo off &for /f %%n in ('find /c /v ""^<"%~1" ') do set/a "n=%%n"
- (for /f "delims=" %%a in (' findstr /n ".*" "%~1" ') do (
- set "s=%%a"&set/a "n-=1"&setlocal enabledelayedexpansion &set "s=!s:*:=!"
- if "!s!" neq "" (if !n! equ 0 (set/p="!s!"<nul&echo,) else (set/p="!s! "<nul))
- endlocal
- ))>"%~1.new"&exit/b
复制代码 如果源文件中间无空行,可用13楼的代码打底再给一个力求全速的纯P版本如下- @echo off &for /f %%n in ('find /c /v ""^<"%~1" ') do set/a "n=%%n"
- (for /f "usebackq delims=" %%a in ("%~1") do (
- set "s=%%a"&set/a "n-=1"&setlocal enabledelayedexpansion
- if !n! equ 0 (set/p="!s!"<nul&echo,) else (set/p="!s! "<nul)
- endlocal
- ))>"%~1.new"&exit/b
复制代码 ...感谢与13楼切磋
|