Board logo

标题: [文本处理] [已解决]批处理如何实现不规则文本定向提取? [打印本页]

作者: pZjVa0    时间: 2013-7-7 11:47     标题: [已解决]批处理如何实现不规则文本定向提取?

  1. PERFORMER "小虎队"
  2. TITLE "爱"
  3. REM DATE 1991
  4. REM DISCID BD0CF00E
  5. REM COMMENT "ExactAudioCopy v0.99pb5"
  6. FILE "CDImage.wav" WAVE
  7. TRACK 01 AUDIO
  8.   TITLE "TEST"
复制代码
以上为被提取文本内容,在条件
  1.行数不确定
  2.上下文不确定
提取 "CDImage.wav" 位置的关键词(不包括引号)

原本在论坛各位大大的帮助下使用下面代码可获得指定结果
  1. @echo off
  2. for /f tokens^=2delims^=^" %%c in ('findstr ^^^""" CDImage.cue^|findstr /n .^|findstr /b 4:') do set c=%%c
  3. echo %c%
  4. pause
复制代码
以""(引号)为分隔符,截取第四个结果。

=================================================

现在新的问题是除了
1.上下文
2.行数不确定
加上 3.以引号为分隔符的结果数
同时也不确定.

单纯通过FILE "CDImage.wav" WAVE 这句话前后文来提取应该如何实现,谢谢。
作者: terse    时间: 2013-7-7 12:14

这样试呢?
  1. findstr /ix "FILE \"CDImage.wav\" WAVE" CDImage.cue
复制代码

作者: pZjVa0    时间: 2013-7-7 13:59

回复 2# terse


    但 CDImage.wav有可能是任何关键词,不一定是CDImage.wav
作者: terse    时间: 2013-7-7 14:30

回复 3# pZjVa0
前后的 FILE 和 WAVE 能确定吗
  1. findstr /i "^FILE.*WAVE$" x.cue
复制代码

作者: pZjVa0    时间: 2013-7-7 15:48

回复 4# terse


    能。
  1. FILE "
  2. " WAVE
复制代码
是确定的
作者: pZjVa0    时间: 2013-7-7 16:15

回复 4# terse


    我还有一个疑问是能不能根据一楼的代码修改成只提取CDImage.wav(不带引号)这个关键词。
作者: pZjVa0    时间: 2013-7-7 16:17

  1. @echo off
  2. for /f tokens^=2delims^=^" %%c in ('findstr /i "^FILE.*WAVE$" CDImage.cue') do set c=%%c
  3. echo %c%
  4. pause
复制代码
最终代码。
作者: pZjVa0    时间: 2013-7-7 16:18

回复 4# terse


非常感谢terse
作者: wskwfkbdn    时间: 2013-7-14 00:45

本帖最后由 wskwfkbdn 于 2013-7-14 16:03 编辑

回复 8# pZjVa0


@echo off
for /f "tokens=2" %%i in ('type 2.txt^|findstr /i ".wav"') do echo %%~i
pause

修改:
@echo off
for /f "tokens=1*" %%i in ('type 2.txt^|findstr /i ".wav"') do set xiao=%%j
for /f "delims=" %%a in ("%xiao:~0,-5%") do echo %%~a
pause

作者: pZjVa0    时间: 2013-7-14 11:22

回复 9# wskwfkbdn


    这个代码在遇到双引号中间存在空格的关键词会失效,例如
  1. 小虎队 - 爱.wav
复制代码
非常感谢你的分享。
作者: wskwfkbdn    时间: 2013-7-14 16:03

本帖最后由 wskwfkbdn 于 2013-7-16 10:45 编辑

回复 10# pZjVa0
  1. @echo off
  2. for /f "tokens=1*" %%i in ('type 2.txt^|findstr /i ".wav"') do set xiao=%%j
  3. for /f "delims=" %%a in ("%xiao:~0,-5%") do echo %%~a
  4. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2