[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

有以下一系列类似文本内容如下:
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是固定的

本帖最后由 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
复制代码

TOP

  1. gawk -v RS= "$0!~/Name=aaaaaa/&&$0!~/Name=bbbbbb/" a.txt
复制代码

TOP

  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. )
复制代码
一路飘过的鸟~~~

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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
复制代码

TOP

只要等号后面的值

TOP

想到一个笨办法,但前提是格式都要跟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

评分人数

TOP

是取整段还是只要=号后的值?
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

返回列表