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

[文件操作] 批处理如何删除文本中含有指定字符串的行?

[复制链接]
发表于 2018-6-16 23:43:18 | 显示全部楼层 |阅读模式
bat脚本循环嵌套的问题
大致目的是删除一组文件中包含一组关键词中任意一个所在行的文本。
就是判定某一文本文件中的某一行是否包含关键字,若包含则不保留,包含则输出到另一路径下的同名文件
  1. for /f %%i in (一组文件) do (
  2. for /f %%j in (%%i) do (
  3. for /f %%k in (一组关键词.txt) do (
  4. echo %%j | find /v "%%k">>新路径\%%i
  5. )))
复制代码
但是循环不论如何嵌套输出里面都会有重复,求解
发表于 2018-6-17 06:16:04 | 显示全部楼层
你的描述 从一批文件里删除分别含多个关键词的行并写入同一个文件,改了一下,写入多个文件
  1. for /f %%g in ('dir /b/on *.txt') do findstr /iv "词1 词2 词3" "%%g">>new%%g
复制代码
 楼主| 发表于 2018-6-17 07:11:27 | 显示全部楼层
本帖最后由 cby120 于 2018-6-17 07:57 编辑

晚上脑子不好使。。已改,每个文件里面还是都有重复,先遍历文件或关键词都不行,会以不同的方式重复。一会把脚本和测试文件贴上
 楼主| 发表于 2018-6-17 07:25:04 | 显示全部楼层
本帖最后由 cby120 于 2018-6-17 07:27 编辑

回复 2# hlzj88
findstr可以加多个关键词啊!这个应该能行。试试
但是还有问题,关键词比较长,中间有空格怎么办?可以加双引号吗?
发表于 2018-6-17 09:37:25 | 显示全部楼层
回复 4# cby120


同时搜索多个字符串
  1. findstr /i /c:"www" /c:"bat home" /c:"net" 1.txt
复制代码
发表于 2018-6-17 15:37:03 | 显示全部楼层
大致目的是删除一组文件中包含一组关键词中任意一个所在行的文本。

看了半天,实现不明白,楼主到底要表达什么意思.
看明白的举个手!!
 楼主| 发表于 2018-6-17 17:04:17 | 显示全部楼层
本帖最后由 cby120 于 2018-6-17 17:12 编辑

先把码贴出来吧。。表达能力有限
  1. :Set1
  2. set sp=.
  3. set /p sp="Please enter the directory of subscript files:"
  4. :Set2
  5. set tp=.
  6. set /p tp="Please enter the target path for the output:"
  7. dir /b /on %sp%>>temp.txt
  8. echo on
  9. for /f %%i in (temp.txt) do (
  10. for /f "delims=" %%j in (%sp%\%%i) do (
  11. echo %%j | findstr /v /c:"%text%" >>%tp%\%%i
  12. ))
  13. del /f /q temp.txt
  14. pause
复制代码
text是关键字
 楼主| 发表于 2018-6-17 17:16:11 | 显示全部楼层
现在依然有问题,就是待处理的文本包含&字符,在第11行echo的时候会被识别为command1&command2的格式,执行&后面的文本。但是也不能对文本里面的每一个&转义,echo也不能加双引号,会直接echo出来,如何避免变量%%j里面的&问题呢?
 楼主| 发表于 2018-6-17 17:23:49 | 显示全部楼层
比如这一行
  1. Style: Default,方正黑体_GBK,20,&H00FFFFFF,&HF0000000,&H00000000,&H32000000,0,0,0,0,100,100,0,0,1,2,1,2,5,5,2,134
复制代码
发表于 2018-6-17 19:16:50 | 显示全部楼层
回复 8# cby120


    放心,%%j中不会出现&被转义的问题,可以测试一下
 楼主| 发表于 2018-6-17 20:01:06 | 显示全部楼层
回复 10# 0000 额其实是需要转义%j包含的&字符,测了有问题。。会报错,说&后面的。。。不是命令,也不是可执行文件。。。比如H00FFFFFF
输出到文本文件的内容就只有&前的字符
发表于 2018-6-17 20:12:33 | 显示全部楼层
  1. findstr /ivg:关键词.log 文本.txt
复制代码
 楼主| 发表于 2018-6-17 20:30:16 | 显示全部楼层
本帖最后由 cby120 于 2018-6-17 20:32 编辑

回复 12# zaqmlp
没太懂,请问如何输出到文件呢?以及文本文件编码不同,UTF-8编码使用/i开关好像会乱码,求解
 楼主| 发表于 2018-6-17 20:31:15 | 显示全部楼层
还想问如何保留空行?
发表于 2018-6-17 21:00:30 | 显示全部楼层
这么多人累的哼哧哼哧的,楼主可以放个样本上来吗,,大家横竖在摸象。你表达清楚些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 10:09 , Processed in 0.020399 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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