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

[文本处理] [已解决]批处理如何实现不规则文本定向提取?

  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 这句话前后文来提取应该如何实现,谢谢。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

TOP

回复 2# terse


    但 CDImage.wav有可能是任何关键词,不一定是CDImage.wav

TOP

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

评分人数

TOP

回复 4# terse


    能。
  1. FILE "
  2. " WAVE
复制代码
是确定的

TOP

回复 4# terse


    我还有一个疑问是能不能根据一楼的代码修改成只提取CDImage.wav(不带引号)这个关键词。

TOP

  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
复制代码
最终代码。

TOP

回复 4# terse


非常感谢terse

TOP

本帖最后由 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

TOP

回复 9# wskwfkbdn


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

TOP

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

TOP

返回列表