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

[文本处理] [已解决]删除特定字符所在的行

[复制链接]
 楼主| 发表于 昨天 08:21 | 显示全部楼层
你说的对,原文件来了, office.zip (113.31 KB)
 楼主| 发表于 昨天 09:19 | 显示全部楼层
77七 发表于 2026-7-12 13:35
reg文件含特殊字符stx,导致find断行错误。
以下用findstr写了下,对行首为[ 行尾为] 的行,如果其下一行 ...

又测试了一下,这个代码没有考虑行首是;;[的特殊情况,谢谢,费心了,谢谢您!!
发表于 昨天 09:46 | 显示全部楼层
zhoubin 发表于 2026-7-14 09:19
又测试了一下,这个代码没有考虑行首是;;[的特殊情况,谢谢,费心了,谢谢您!! ...

看了下原文件,编码为GB18030
10楼代码删除第2行,确保正确处理中文;
10楼代码删除第11、15行,只判断行尾,不再判断行首。
发表于 昨天 11:37 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-7-14 14:12 编辑
zhoubin 发表于 2026-7-14 08:00
经反复测试,这个脚本,耗时较长,而且输出的结果有问题,真是奇怪;论坛不能传.reg文件,上面我传的简易 ...


用批处逐行处理约 2.5w 行的文本文件,太难为 bat 了... 不过还是订正了13楼的代码,尽量提升循环调用 findstr 的效能,改为一次性创建临时文件,不必在循环体内重复生成。新版实测与 bat+powershell 版本的运行结果相同,只是效率要比 bat+jscript、bat+powershell 版本慢多了,用16楼提供的约 2.5w 行文件实测耗时对比结果如下
   bat+jscript : bat+powershell : bat+findstr = 1 : 10 : 450
发表于 昨天 12:41 | 显示全部楼层
随附一个批处调用 powershell 一行流版本,可将 1.txt 文件中的多个连续空行删减为一个空行,结果存为 2.txt,假设 1.txt 文件为简中编码(ansi / gb2312)。

test.bat
  1. @echo off &powershell -nop -c "$s=gc 1.txt -raw;$s=$s -replace '(\r\n){2,}', \"`r`n`r`n\";$s -replace '(\r\n)+$', \"`r`n\"|sc 2.txt" &exit/b
复制代码
 楼主| 发表于 昨天 13:41 | 显示全部楼层
aloha20200628 发表于 2026-7-13 14:03
再改用以下的 bat+findstr 代码复刻 powershell 的算法,与4楼,12楼代码三者实测运行耗时比,结果约为
    ...

Win11下测试,ok,谢谢
 楼主| 发表于 昨天 14:23 | 显示全部楼层
aloha20200628 发表于 2026-7-14 12:41
随附一个批处调用 powershell 一行流版本,可将 1.txt 文件中的多个连续空行删减为一个空行,结果存为 2.tx ...

连续空行合并,不错,谢谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-7-15 04:59

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表