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

[文本处理] 批处理如何提取文本中双引号内的特定内容?

本帖最后由 pcl_test 于 2016-11-10 20:12 编辑

<host name="NTCP-RSCFADS01A.CPC.NTC.REUINT.COM" service
<host name="NTCP-RSCDOCT01A.CPC.NTC.REUINT.COM" service-sets="gps,production,docproc-8,license"/>
<host name="NTCP-RSCDOCT01B.CPC.NTC.REUINT.COM" service-sets="gps,production,docproc-8,license"/>
<host name="NTCP-RSCDOCT02A.CPC.NTC.REUINT.COM" service-sets="gps,production,docproc-8,license"/>

文本中有这样的信息,如何只输出引号中的信息得到这样的结果:

NTCP-RSCFADS01A.CPC.NTC.REUINT.COM
NTCP-RSCDOCT01A.CPC.NTC.REUINT.COM
NTCP-RSCDOCT01B.CPC.NTC.REUINT.COM
NTCP-RSCDOCT02A.CPC.NTC.REUINT.COM

  1. powershell -c "gc '文本.txt'|%%{$_.split('\"')[1]}"
  2. pause
复制代码
  1. powershell -c "([regex]'(?<=<host name="")[^\"]+').Matches([IO.File]::ReadAllText('文本.txt', [Text.Encoding]::default))^|%%{$_.Value}"
  2. pause
复制代码
  1. powershell -c "[IO.File]::ReadAllText('文本.txt', [Text.Encoding]::default)|Select-String '(?<=<host name="")[^\"]+' -AllMatches^|%%{$_.matches^|%%{$_.Value}}"
  2. pause
复制代码

TOP

  1. @echo off
  2. (for /f tokens^=2^ delims^=^" %%i in (test.txt) do echo %%i )>2.txt
  3. rem 复习一下用"作为分隔符,竟然忘记了对空格进行转义——学而时习之!
  4. pause>nul
复制代码

TOP

zm900612的方法,用引号做分隔符:
  1. @echo off
  2. for /f tokens^=2^ delims^=^" %%a in (a.txt) do echo %%a
  3. pause>nul
复制代码
***共同提高***

TOP

  1. @echo off
  2. for /f "tokens=3 delims== " %%i in (a.txt) do echo %%~i
  3. pause
复制代码

TOP

忽略编码问题,忽略敏感字符问题,仅以楼主提供的示例为例:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /F "delims=" %%a in (1.txt) do (
  3. set "a=%%a"&set "a=!a:"=$!"
  4. for /F "tokens=2 delims=$" %%b in ("!a!") do echo.%%b
  5. ))>2.txt
复制代码

[ 本帖最后由 hanyeguxing 于 2010-6-1 17:28 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表