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

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

本帖最后由 cxq00 于 2024-8-12 00:03 编辑

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

例如:一个关键字txt文件是放在 E:\文件\list.txt  关键字可能有三五个这样的
        几十个文本文件存放在 E:\文件\文档汇总
     我要的效果是文本内容只要是包含任意特定关键字的就删除,没有就留下。 重点是文本中的内容只要包含任一个关键字符的就删除,不是文件名称包含。

本帖最后由 newswan 于 2024-8-11 22:03 编辑

大致如此
  1. for /f  %%a in (list.txt) do (
  2.     echo del *%%a*.*
  3. )
  4. pause
  5. exit/b
复制代码

TOP

回复 2# newswan


    这个不行,直接闪没了

TOP

本帖最后由 newswan 于 2024-8-11 22:06 编辑

回复 3# cxq00

看看输出,补充其他部分:
list.txt 在哪里
被删除的文件在哪里
list 文件怎么写

TOP

  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
复制代码
bat小白,请多指教!谢谢!

TOP

回复 4# newswan


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

   关键字是一行一个

TOP

本帖最后由 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行

TOP

本帖最后由 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
复制代码

TOP

回复 7# newswan

运行后只显示这个,其他都没变化
    del *aa*.*
del *bb*.*
del *cc*.*
del *dd*.*
请按任意键继续. . .

TOP

回复 9# cxq00

先没注意是多个文件,重新改了下
如果显示正确,第8行 删除 echo

TOP

回复 8# aloha20200628


    FINDSTR: 无法从 list.txt 读取字符串

TOP

回复 11# cxq00

8楼代码已订正,再试试吧

TOP

本帖最后由 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
复制代码
bat小白,请多指教!谢谢!

TOP

回复 13# 77七


       还是不行

TOP

本帖最后由 qixiaobin0715 于 2024-8-12 10:16 编辑

你把测试文本发到网盘上,便于大家测试用。
“关键字可能有三五个这样的”就没必要保存到文本里,直接放到代码里即可。

TOP

返回列表