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

[文本处理] 根据一个文本列出的字符串/行内容,排除/去掉/删除另一个文本相同的内容/提取不同内容

[复制链接]
发表于 2015-3-24 13:53:05 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2017-4-13 09:29 编辑

批处理命令findstr完全匹配,过滤内容来自文件
1.txt的内容
C:\Autoruns.13.02.chs.th_sjy.exe
C:\Program Files\Autoruns.13.02.chs.th_sjy.exe
D:\Autoruns.13.02.chs.th_sjy.exe
D:\ss\Autoruns.13.02.chs.th_sjy.exe
D:\TMACv6.0.6_Setup\Autoruns.13.02.chs.th_sjy.exe
D:\tt\Autoruns.13.02.chs.th_sjy.exe
G:\Autoruns.13.02.chs.th_sjy.exe

2.txt的内容
D:\ss\Autoruns.13.02.chs.th_sjy.exe

想把2.txt包含的内容作为排除想,把1.txt种包括的过滤掉,不区分大小写,全路径配备,
如果2.txt的内容里面包括只有路径没有文件名称的排除项,也希能匹配到路径(这两个过滤可以分开也可以是一个方案解决也可以)

我写的一个:
  1. findstr /irbvG:"2.txt" 1.txt>>1.txt
复制代码
但是代码不对,达不到效果

评分

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

查看全部评分

发表于 2015-3-24 15:36:26 | 显示全部楼层
findstr命令不靠谱,推荐使用grep命令:
  1. grep -ivxFf 2.txt 1.txt > 3.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 同意

查看全部评分

发表于 2015-3-24 15:41:15 | 显示全部楼层
把r改成l
  1. findstr /ilbvG:"2.txt" 1.txt>>1.txt
复制代码
 楼主| 发表于 2015-3-24 15:52:09 | 显示全部楼层
回复 2# DAIC


    谢谢,主要是不想用第三方软件了,还得下载,这个自带,如果第二条无法满足,那么能满足第一条也可以
想把2.txt包含的内容作为排除想,把1.txt种包括的过滤掉,不区分大小写,全路径配备,
 楼主| 发表于 2015-3-24 15:57:29 | 显示全部楼层
回复 3# cobat


    这个好像是可以了。
 楼主| 发表于 2015-3-25 02:16:06 | 显示全部楼层
回复 3# cobat


    还是不行。
排除的文件路径中有空格达不到排除的效果。其文本内容如下:
  1. C:\WINDOWS\system32\config\systemprofile\Local Settings\Temporary Internet Files\Content.IE5\2N04V8MU\desktop.ini
  2. C:\WINDOWS\system32\config\systemprofile\Local Settings\Temporary Internet Files\Content.IE5\7XEV1GUV\desktop.ini
  3. C:\WINDOWS\system32\config\systemprofile\Local Settings\Temporary Internet Files\Content.IE5\BTLVJPL2\desktop.ini
  4. C:\WINDOWS\system32\config\systemprofile\Local Settings\Temporary Internet Files\Content.IE5\ZJ4R5M2P\desktop.ini
  5. C:\WINDOWS\system32\config\systemprofile\「开始」菜单\desktop.ini
  6. C:\WINDOWS\system32\config\systemprofile\「开始」菜单\程序\desktop.ini
  7. C:\WINDOWS\system32\config\systemprofile\「开始」菜单\程序\附件\desktop.ini
复制代码
发表于 2015-3-25 09:23:48 | 显示全部楼层
一定要用 findstr 的话,这样试下:
  1. @echo off
  2. (for /f "delims=" %%a in (2.txt) do (
  3.         set "s=%%a"
  4.         setlocal enabledelayedexpansion
  5.         echo,!s:\=\\!
  6.         endlocal
  7. ))>$
  8. more 1.txt|findstr /irxvg:$>3.txt
  9. del $
  10. pause
复制代码
 楼主| 发表于 2015-3-25 21:34:35 | 显示全部楼层
回复 7# apang


    findstr过滤的项目是不是有字节限制,提示这样:
FINDSTR: 搜索字符串太长
发表于 2015-3-25 21:44:39 | 显示全部楼层
本帖最后由 cobat 于 2015-3-25 23:41 编辑
回复  cobat


    还是不行。
排除的文件路径中有空格达不到排除的效果。其文本内容如下:
freesoft00 发表于 2015-3-25 02:16


    我这里可以
发表于 2015-3-25 23:17:30 | 显示全部楼层
回复 9# cobat


    楼主的意思好像是2.txt含中文字符时不行
发表于 2015-3-25 23:21:16 | 显示全部楼层
本帖最后由 apang 于 2015-3-25 23:29 编辑

好吧,7#仅仅转义斜杠字符不行,其它特殊字符也得转义,蛋疼

直接vbs好了
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. Set file = fso.OpentextFile("1.txt")
  3. s = fso.OpenTextFile("2.txt").ReadAll
  4. s = vbCrLf & LCase(s) & vbCrLf
  5. while Not file.AtEndOfStream
  6.         s1 = file.ReadLine
  7.         If InStr(s, vbCrLf & LCase(s1) & vbCrLf) = 0 Then
  8.                  s2 = s2 & s1 & vbCrLf
  9.         End If
  10. wend
  11. fso.OpentextFile("3.txt", 2, true).Write s2
复制代码

评分

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

查看全部评分

发表于 2015-3-25 23:22:39 | 显示全部楼层
回复 10# apang


    还是你对
 楼主| 发表于 2015-3-25 23:36:48 | 显示全部楼层
应该这样也可以把,文本去重,我看到原来论坛中有文本去重的批处理。
第一步读取文本2。
第二部读取文本1中不包括文本2的内容,然后导出其值到文本3,
第三部然后合并文本2的内容到导出的文本3中。
因为我的问题是排除,所以不用第三部就可以了。

如果方便请给出具体的代码。
这样就不用findstr了。
 楼主| 发表于 2015-3-25 23:40:46 | 显示全部楼层
文本中有空格,有斜杠,有中文字符,就是符合路径和文件名的都可以有。
发表于 2015-3-25 23:45:40 | 显示全部楼层
本帖最后由 pcl_test 于 2015-3-25 23:48 编辑

回复 8# freesoft00
findstr单条关键词上限255,find似乎没有上限
  1. @echo off
  2. set a=1
  3. set n=1
  4. :loop
  5. findstr "%a%" %0 >nul
  6. echo %n%
  7. echo findstr "%a%"
  8. set a=%a%1
  9. set /a n+=1
  10. goto loop
复制代码
  1. @echo off
  2. set a=1
  3. set n=1
  4. :loop
  5. find "%a%" %0 >nul
  6. echo %n%
  7. echo find "%a%"
  8. set a=%a%1
  9. set /a n+=1
  10. goto loop
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 10:12 , Processed in 0.022165 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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