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

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

[复制链接]
发表于 2013-7-7 11:47:34 | 显示全部楼层 |阅读模式
  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 这句话前后文来提取应该如何实现,谢谢。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-7-7 12:14:42 | 显示全部楼层
这样试呢?
  1. findstr /ix "FILE "CDImage.wav" WAVE" CDImage.cue
复制代码
 楼主| 发表于 2013-7-7 13:59:15 | 显示全部楼层
回复 2# terse


    但 CDImage.wav有可能是任何关键词,不一定是CDImage.wav
发表于 2013-7-7 14:30:38 | 显示全部楼层
回复 3# pZjVa0
前后的 FILE 和 WAVE 能确定吗

  1. findstr /i "^FILE.*WAVE$" x.cue
复制代码

评分

参与人数 1技术 +1 收起 理由
pZjVa0 + 1 感谢分享

查看全部评分

 楼主| 发表于 2013-7-7 15:48:40 | 显示全部楼层
回复 4# terse


    能。
  1. FILE "

  2. " WAVE
复制代码
是确定的
 楼主| 发表于 2013-7-7 16:15:46 | 显示全部楼层
回复 4# terse


    我还有一个疑问是能不能根据一楼的代码修改成只提取CDImage.wav(不带引号)这个关键词。
 楼主| 发表于 2013-7-7 16:17:56 | 显示全部楼层
  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
复制代码
最终代码。
 楼主| 发表于 2013-7-7 16:18:30 | 显示全部楼层
回复 4# terse


非常感谢terse
发表于 2013-7-14 00:45:17 | 显示全部楼层
本帖最后由 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
 楼主| 发表于 2013-7-14 11:22:19 | 显示全部楼层
回复 9# wskwfkbdn


    这个代码在遇到双引号中间存在空格的关键词会失效,例如
  1. 小虎队 - 爱.wav
复制代码
非常感谢你的分享。
发表于 2013-7-14 16:03:56 | 显示全部楼层
本帖最后由 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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 11:24 , Processed in 0.020276 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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