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

[文本处理] 批处理如何只取一个文本中想要的段?

[复制链接]
发表于 2011-7-18 11:24:08 | 显示全部楼层 |阅读模式
有以下一系列类似文本内容如下:
id=123214214
Name=aaaaaa

id=123214321
Name=gsdagdsg

id=12321421
Name=bbbbbbb

如何屏蔽name=aaaaaa和bbbbbb的这2个小段包括他之前的id=内容,只取除此之外的小段的id和name的值,注意name=aaaaaa和name=bbbbbb这样的小段不一定每个文本都有的,如果有的话name=aaaaaa和name=bbbbbbb是固定的
发表于 2011-7-18 11:28:53 | 显示全部楼层
是取整段还是只要=号后的值?
发表于 2011-7-18 12:53:00 | 显示全部楼层
想到一个笨办法,但前提是格式都要跟LZ贴出来的是一样的
  1. @echo off&setlocal ENABLEDELAYEDEXPANSION
  2. for /f %%i in (a.txt) do (set %%i
  3. echo.%%i|findstr /i "^name=">nul&&if "!name!"=="aaaaaa" (echo.>nul) else (if not "!name!"=="bbbbbbb" echo id=!id!&echo name=!name!))
  4. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
mxxcgzxxx + 1 乐于助人,好办法

查看全部评分

 楼主| 发表于 2011-7-18 17:23:23 | 显示全部楼层
只要等号后面的值
发表于 2011-7-19 17:19:40 | 显示全部楼层
本帖最后由 lvsehuaxue 于 2011-7-19 17:21 编辑

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set /a n=n%%2+1
  4.     set a=!b!
  5.     set b=%%i  
  6.     if !n!==2 (
  7.       echo !b!|findstr "Name=aaaaaa Name=bbbbbbb">nul || (echo !a!&echo !b!)
  8.     )
  9. )
  10. pause
复制代码
发表于 2011-7-19 17:43:32 | 显示全部楼层
本帖最后由 lvsehuaxue 于 2011-7-19 18:43 编辑

3楼可简化

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do set %%i&set /a n=n%%2+1&if !n!==2 echo %%i|findstr "aaaaaa bbbbbbb">nul||(echo id=!id!&echo Name=!Name!)   
  3. pause
复制代码
发表于 2011-7-19 19:24:28 | 显示全部楼层

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For %%a In (*.txt) Do (
  3.   Set "Str="
  4.   (For /F "delims=" %%b In ('Type "%%a"^&Echo end') Do (
  5.     For %%c IN (aaaaaa bbbbb) Do If "%%b" EQU "Name=%%c" Set "Str="
  6.     If Defined Str Echo !Str!&Echo %%b
  7.     Set "Str=%%b"
  8.   )>tem
  9.   Move tem "%%a"
  10. )
复制代码
发表于 2011-7-19 22:58:25 | 显示全部楼层
  1. gawk -v RS= "$0!~/Name=aaaaaa/&&$0!~/Name=bbbbbb/" a.txt
复制代码
发表于 2011-7-22 12:43:22 | 显示全部楼层
本帖最后由 Hello123World 于 2011-7-22 12:49 编辑
  1. @echo off
  2. For /f "delims=" %%i in ('dir  /b *.txt') do  findstr /v "Name=bbbbbbb id=12321421 id=123214214 Name=aaaaaa" "%%i">>"%%~nih%%~xi"
  3. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 00:29 , Processed in 0.021896 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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