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

[文本处理] 批处理如何查找出txt文本里每一行中指定字符出现次数少于指定次数的行

[复制链接]
发表于 2012-7-27 13:41:08 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-7 23:11 编辑

其实我的大概意思

现在的文本有很多行,每行都如下示例:

chaonan\beifeng\bathome\abc123456
nanfeng\wangji\pichulizhijia\wwwwww181927121
pichulizhijia\laiwang\chengji\22feneryila


每行都有3个“\”隔开,如果哪一行没有三个"\",就导出到 文本b.txt

处理文本1.txt里的内容,如果哪一行没有三个"\",就全部导出到 文本b.txt
发表于 2012-7-27 14:09:55 | 显示全部楼层

  1. @echo off
  2. (for /f "tokens=1-4 delims=" %%a in (1.txt) do (
  3.     if "%%d" == "" echo %%a\%%b\%%c
  4. )) > b.txt
  5. pause
复制代码
发表于 2012-7-27 16:02:35 | 显示全部楼层
本帖最后由 bhsx 于 2012-7-27 16:03 编辑
  1. findstr /r "^[^\\]*\\[^\\]*\\[^\\]*\\[^\\]*$" 1.txt>b.txt
复制代码
发表于 2012-7-27 16:11:37 | 显示全部楼层
  1. @echo off
  2. (for /f "delims=" %%a in (1.txt) do (
  3.   for %%b in ("\%%a\..\..\..") do if "%%~nxb"=="" echo,%%a
  4. ))>b.txt
复制代码
 楼主| 发表于 2012-7-27 21:53:33 | 显示全部楼层
回复 2# Demon


    存储空间不足,无法处理此命令。
内存不足。
请按任意键继续. . .
 楼主| 发表于 2012-7-28 21:02:38 | 显示全部楼层
回复 3# bhsx


    你这个是查找,而不是排除
发表于 2012-7-28 21:48:20 | 显示全部楼层
用vbs比较简单,而且精确
  1. option explicit
  2. dim a, b, c, d, e, ForWriting
  3. ForWriting = 2
  4. set a = createobject("scripting.filesystemobject")
  5. set b = a.opentextfile("1.txt")
  6. set e = a.createtextfile("b.txt", ForWriting)
  7. do until b.atendofstream
  8.         d = b.readline
  9.         if not func1(d) = 3 then
  10.                 e.writeline d
  11.         end if
  12. loop

  13. function func1(str)
  14. set c = new regexp
  15. c.pattern = "\"
  16. c.global = true
  17. func1 = c.execute(str).count
  18. end function
复制代码
发表于 2012-7-28 23:17:00 | 显示全部楼层
用BAT再做一个
  1. @ECHO OFF
  2. Setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in (1.txt) do (
  4.         set str=%%i&set str=!str:\= \!
  5.         for %%j in (!str!) do (
  6.                 set str1=%%j
  7.                 if "!str1:~0,1!"=="" set /a a+=1
  8.         )
  9.         if not !a!==3 echo %%i>>b.txt
  10.         set a=0
  11. )
复制代码
发表于 2012-7-31 09:59:51 | 显示全部楼层
要排除的加个/v参数
  1. findstr /v /r "^[^\\]*\\[^\\]*\\[^\\]*\\[^\\]*$" 1.txt>b.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 07:45 , Processed in 0.033360 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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