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

[文本处理] [已解决]批处理如何过滤给定字符中的某一个出现两次以上的行

[复制链接]
发表于 2011-11-10 15:39:01 | 显示全部楼层 |阅读模式
如,给定字符set "str=enun wizard abc test",过滤掉类似:enunenunabc、enunabcenun、testwizardwizard这样的行?

能达到目的就行,代码效率第一,其它其次,大家帮忙想想办法

评分

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

查看全部评分

发表于 2011-11-10 15:55:13 | 显示全部楼层
本帖最后由 CrLf 于 2011-11-10 17:26 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str= enun wizard abc test "
  3. for %%a in (!str!) do set "str=!str: %%a = %%a.*%%a !"
  4. ::如果要增强对特殊字符的兼容性,则使用 set "var=!var! %%a.*%%a" 设置变量,下文也改用 "!var:\=\\!"
  5. for %%a in (\ ^" [ ] ^^ ^$) do set "str=!str:%%a=\%%a!"
  6. findstr /v "!str:.=\.!" 1.txt
  7. pause
复制代码

评分

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

查看全部评分

 楼主| 发表于 2011-11-10 16:15:13 | 显示全部楼层
本帖最后由 lxzzr 于 2011-11-10 16:16 编辑

回复 2# CrLf

没效果呀,老兄,一楼给出了示例文本
发表于 2011-11-10 16:44:41 | 显示全部楼层
回复 3# lxzzr


    ?
   可是我用示例文本测试有效啊...
 楼主| 发表于 2011-11-10 17:01:16 | 显示全部楼层
回复 4# CrLf


   搞定。。。
发表于 2011-11-10 17:10:36 | 显示全部楼层
向各位学习来了,特别感谢 CrLf 版主 为我咨询解答,我现在已摆脱讨厌的验证,特别是 set a=bat&echo %a:~-2% 一定要回答 at 才算对 , 问题是我不认为它是对的。
CrLf 版主的代码无疑是再简捷不过了,要是我也会往findstr 上想,我也注意到要求是“代码效率第一,其它其次”,想请教一下加 “:\=\\” 是有什么特别的原因吗? 不加嘛认为忽略字符串中有“\”带来的问题,既想兼顾这类符号,为什么没管 “$” 呢,  句点符“.”影响最小 也是可同样解决 要是还想兼顾星号符“*” 就比较麻烦了,不知有什么好的解决方法

评分

参与人数 1PB +3 收起 理由
CrLf + 3 感谢提醒

查看全部评分

发表于 2011-11-10 17:23:36 | 显示全部楼层
回复 6# yyykkkyyyy


    嗯,是不够严谨,思路自相矛盾了。再改下,除了 * 号之外,findstr 中所有特殊字符都能简单加上 \ 进行转义
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 05:31 , Processed in 0.033926 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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