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

[文本处理] [已解决]求助批处理匹配txt行 进行删除 代码附上 谢谢 各位大佬

[复制链接]
发表于 2025-8-14 16:05:05 | 显示全部楼层 |阅读模式

"D:\UserData\Desktop\1C测试\AA200\" content:abc123
在2008系统 用工具 Everything 搜索内容 让后进行删除相同 abc123(行)

怎么写个脚本进行 快速删除指定 (配置内容.txt) 的行

配置内容.txt
内容
abc123
备注 abc123 是随机 账号 数字加字母账号  需要完全匹配行  多一字符 或者少一个字符 都不可以
可以用 bat 或者 powershell 混编  或者用 第三方工具

意思 我只要 配置 配置内容.txt 的一行内容
运行下 bat 就好了

感谢 各位大佬


这个用的sed64.exe 快一点 根据 3#  自己使用 deepseek 演变而来
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. set "sed=sed64.exe"
  4. set "config=配置内容.txt"

  5. if not exist "%sed%" (
  6.     echo 错误:未找到 sed64.exe
  7.     exit /b 1
  8. )
  9. if not exist "%config%" (
  10.     echo 错误:未找到配置文件 %config%
  11.     exit /b 1
  12. )

  13. set "sed_script=%temp%\delete_patterns.sed"
  14. copy nul "%sed_script%" >nul

  15. for /f "usebackq delims=" %%L in ("%config%") do (
  16.     >>"%sed_script%" echo /^%%L$/d
  17. )

  18. set "target_dir=G:\目录"
  19. echo 开始处理目录: %target_dir%
  20. echo 过滤非空TXT文件...

  21. for /r "%target_dir%" %%F in (*.txt) do (
  22.     REM 跳过0KB文件
  23.     if not %%~zF == 0 (
  24.         echo 正在处理: %%F
  25.         "%sed%" -i -f "%sed_script%" "%%F"
  26.     )
  27. )

  28. del /q "%sed_script%"

  29. echo 删除操作完成
  30. pause
复制代码
这个纯bat 比上面那个 慢一点   根据 4#  自己使用 deepseek 演变而来
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. if not exist "配置内容.txt" (
  4.     echo 错误:找不到配置文件 "配置内容.txt"
  5.     pause
  6.     exit /b
  7. )

  8. set "pattern_file=%temp%\patterns.tmp"
  9. (
  10.     for /f "usebackq delims=" %%p in ("配置内容.txt") do (
  11.         echo ^%%p$
  12.     )
  13. ) > "%pattern_file%"

  14. for /R %%d in (.) do (
  15.     pushd "%%d"
  16.     for /f "delims=" %%f in ('dir /b /a-d *.txt 2^>nul') do (
  17.         for %%z in ("%%f") do (
  18.             if %%~zz GTR 0 (
  19.                 echo 正在处理: "%%d\%%f"
  20.                 findstr /v /r /g:"%pattern_file%" "%%f" > "%%f.tmp"
  21.                 move /y "%%f.tmp" "%%f" > nul
  22.             )
  23.         )
  24.     )
  25.     popd
  26. )

  27. del "%pattern_file%" > nul 2>&1

  28. echo 所有文件处理完成!
  29. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-8-14 18:03:06 | 显示全部楼层
有个bat思路:先for,find获取所有txt文件的行号和行内容和文件名(行号→行内容→文件名)全部扔到一个临时处理的txt文件里,
然后再for临时文件的每行的 → (任意符号替代→也行)符号为分隔的第二个变量的(行内容)是否存在重复,如重复则获取,获取行号和文件名,
得到重复的文件名和行号就简单多了,用获得到重复行的文件名和行号find排除行号重新生成一个新的txt替换原文件(至于是生成所有内容重复行的文件还是保留第一份内容重复行的文件写个排除),删除临时文件,退出。收工。
有个缺陷,临时文件会是所有txt文件大小的总和还大点,处理起来估计会很慢,甚至BUG,卡死,退出


在外工作偷懒看帖,没时间写,只负责提供思路,,,不负责后续,
发表于 2025-8-14 18:04:55 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-14 21:21 编辑

回复 1# kissbzm

用 sed.exe (本坛第三方下载 http://bcn.bathome.net/s/tool/index.html?key=sed,落地即用,与被处理文件 *.txt 同目录) 删除当前目录下 *.txt 文件中包含指定全字匹配的文本行,同时修改源文件,被删除文本行取自 "D:\UserData\Desktop\1C测试\配置内容.txt"。

  1. @echo off &cd /d "D:\UserData\Desktop\1C测试\AA200"
  2. for /f "delims=" %%c in ('sed -n -r "/^[A-z0-9]+$/p" "D:\UserData\Desktop\1C测试\配置内容.txt" ') do sed -i "/^%%~c$/d" *.txt
  3. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2025-8-14 18:42:01 | 显示全部楼层
编码全部ansi
里面的abc123自行变更

  1. @echo off
  2. for %%i in (*.txt) do findstr /xvc:"abc123" "%%i" > "new_%%i.new"
  3. rename *.new *.txt
  4. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2025-8-14 19:57:17 | 显示全部楼层
回复 4# Five66


    你这回复也太随意了,楼主明说了,,abc123,只是随机账户!并不是特定内容,非固定存在,,只是举个栗子,,🌰

意思 我只要 配置 配置内容.txt 的一行内容

言下之意,就是一行随机未知的(行内容),只要出现重复,则删除,,
看来,和我一样懒的人,,,还是有的,,,哈哈
发表于 2025-8-14 20:05:04 | 显示全部楼层
回复 5# jiavip


    配置 配置内容.txt 的一行内容
换成
配置 bat文件 findstr里的内容
不都是一样的??(手动的话)
发表于 2025-8-15 11:03:30 | 显示全部楼层
1楼第二段批处理存在两个问题,一是少一个转义符号,^^%%p$;二是建议不要用 findstr /g ,1是关键词少没必要,2是这个命令经常出错,搞不清楚原因。
发表于 2025-8-15 14:29:02 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-15 14:33 编辑

回复 1# kissbzm

一楼代码第一段第20行中的 echo /^%%L$/d 须改为 echo /^^%%L$/d,否则会因转义符不足导致结果输出为 /abc126$/d 而非所期望的全行匹配模式 /^abc126$/d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:10 , Processed in 0.031748 second(s), 14 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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