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

[文本处理] 批处理如何把txt文本内容包含特定的关键字就删除文件,关键字很多个以文本文件提供

[复制链接]
发表于 2024-8-11 21:37:27 | 显示全部楼层 |阅读模式
本帖最后由 cxq00 于 2024-8-12 00:03 编辑

批处理如何把txt文本内容包含特定的关键字就删除文件,关键字很多个以文本文件提供,不放在同一目录下的

例如:一个关键字txt文件是放在 E:\文件\list.txt  关键字可能有三五个这样的
        几十个文本文件存放在 E:\文件\文档汇总
     我要的效果是文本内容只要是包含任意特定关键字的就删除,没有就留下。 重点是文本中的内容只要包含任一个关键字符的就删除,不是文件名称包含。
发表于 2024-8-11 21:51:55 | 显示全部楼层
本帖最后由 newswan 于 2024-8-11 22:03 编辑

大致如此

  1. for /f  %%a in (list.txt) do (
  2.     echo del *%%a*.*
  3. )
  4. pause
  5. exit/b
复制代码
 楼主| 发表于 2024-8-11 21:55:50 | 显示全部楼层
回复 2# newswan


    这个不行,直接闪没了
发表于 2024-8-11 22:04:49 | 显示全部楼层
本帖最后由 newswan 于 2024-8-11 22:06 编辑

回复 3# cxq00

看看输出,补充其他部分:
list.txt 在哪里
被删除的文件在哪里
list 文件怎么写
发表于 2024-8-11 22:19:02 | 显示全部楼层
  1. @echo off
  2. rem 保存为ansi
  3. cd /d "%~dp0"
  4. set file=d:\1.txt

  5. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  6.         call :1 "%%i"
  7. )
  8. pause
  9. exit

  10.         :1
  11.         for /f "useback delims=" %%a in ("%file%") do (
  12.                 find "%%a" "%~1" 1>nul
  13.                 if not errorlevel 1 (
  14.                         del "%~1"
  15.                         echo find "%%a" del "%~1"
  16.                         exit /b
  17.                 )
  18.         )
  19.         exit /b
复制代码
 楼主| 发表于 2024-8-11 22:28:18 | 显示全部楼层
回复 4# newswan


    例如:关键字txt文本在 E:\文件   ,需要删除的文本文件夹E:\文件\文档汇总下

   关键字是一行一个
发表于 2024-8-11 23:29:50 | 显示全部楼层
本帖最后由 newswan 于 2024-8-11 23:45 编辑

回复 6# cxq00

  1. @echo off

  2. set list="E:\文件\list*.txt"
  3. set dest="E:\文件\文档汇总"

  4. pushd %dest%
  5. for /f "usebackq tokens=* delims=" %%a in (` type %list% `) do (
  6.         echo del *%%a*.*
  7. )
  8. popd

  9. pause
  10. exit/b
复制代码
看下输出 修改第8行
发表于 2024-8-11 23:43:29 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-8-12 09:10 编辑

回复 6# cxq00

假设当前目录中的关键词列表文件为 1.lst
以下批处代码在当前目录下运行,将会删除 "E:\文件\文档汇总\" 子目录中包含 1.lst 所列关键词的 *.txt 文件

  1. @echo off &for /f "delims=" %%F in (
  2.     'dir /b/a-d E:\文件\文档汇总\*.txt'
  3. ) do findstr /limg:"1.lst" "E:\文件\文档汇总\%%F"&&del /q "E:\文件\文档汇总\%%F"
  4. pause&exit/b
复制代码
 楼主| 发表于 2024-8-11 23:44:42 | 显示全部楼层
回复 7# newswan

运行后只显示这个,其他都没变化
    del *aa*.*
del *bb*.*
del *cc*.*
del *dd*.*
请按任意键继续. . .
发表于 2024-8-11 23:48:10 | 显示全部楼层
回复 9# cxq00

先没注意是多个文件,重新改了下
如果显示正确,第8行 删除 echo
 楼主| 发表于 2024-8-11 23:48:52 | 显示全部楼层
回复 8# aloha20200628


    FINDSTR: 无法从 list.txt 读取字符串
发表于 2024-8-12 00:02:04 | 显示全部楼层
回复 11# cxq00

8楼代码已订正,再试试吧
发表于 2024-8-12 00:38:34 | 显示全部楼层
本帖最后由 77七 于 2024-8-12 00:40 编辑

送佛送到西...
再写一个,双击即可完成操作...
  1. @echo off
  2. rem 保存为ansi
  3. cd /d "E:\文件\文档汇总"
  4. set file=E:\文件\1.txt

  5. for /f "useback delims=" %%i in ("%file%") do (
  6.         for /f "tokens=1*" %%a in ('find "%%i" *.txt') do (
  7.                 if "%%a" equ "----------" (
  8.                         set m=%%b
  9.                 ) else (
  10.                         call del "%%m%%" 2>nul
  11.                 )
  12.         )
  13. )
  14. pause
复制代码
 楼主| 发表于 2024-8-12 09:41:25 | 显示全部楼层
回复 13# 77七


       还是不行
发表于 2024-8-12 10:07:49 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-8-12 10:16 编辑

你把测试文本发到网盘上,便于大家测试用。
“关键字可能有三五个这样的”就没必要保存到文本里,直接放到代码里即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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