Board logo

标题: [文件操作] 那位帮忙写个批量提取多个文本里的特定内容来重命名文本 [打印本页]

作者: bear123    时间: 2013-5-23 23:35     标题: 那位帮忙写个批量提取多个文本里的特定内容来重命名文本

本帖最后由 pcl_test 于 2017-3-20 02:28 编辑

具体是文件的批量文件名重新命名
有一个“150660.KSC”文件,其文件内容具体如下:
karaoke := CreateKaraokeObject;
karaoke.internalnumber := 00000000;  // 歌曲编号
karaoke.rows := 2;
karaoke := CreateKaraokeObject;
karaoke.clear;

// 歌曲附加信息(便于检索)
karaoke.tag('歌名', '前世');
karaoke.tag('缩写', 'QS');
karaoke.tag('歌手', '陈慧琳');
karaoke.tag('字数', '2');
karaoke.tag('语种', '粤语');
karaoke.tag('歌类', '男');
karaoke.tag('电影', 'false');
karaoke.tag('风格', '流行');
karaoke.tag('流行', 'true');
karaoke.tag('音量', '130');
karaoke.tag('声道', '1');
karaoke.tag('FMP声道', '32');
karaoke.tag('语音', '0');
karaoke.tag('介质', '10');
karaoke.tag('时间', '2008-9-5');
karaoke.tag('歌星拼音', '');
karaoke.mtvmode :=true;
karaoke.videofilename := '';
karaoke.audiofilename := '*.wav';
karaoke.XSDVideoMode := 4;
karaoke.CommonVideo := '150660.mpg';

我想把150660.KSC文件重新命名为150660-陈慧琳-前世.ksc

那位能否帮忙写一个代码,万分感谢。

我在网上只找到了这个代码(http://zhidao.baidu.com/question/122022750.html)是百度知道中找的,但是根我要求的不一样。
作者: wankoilz    时间: 2013-5-24 00:16

和要处理的文件放在同一目录:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir/a/b/s *.ksc') do (
  3.     for /f "usebackq delims=' tokens=2,4" %%b in ("%%a") do (
  4.         if "%%b"=="歌名" set song=%%c
  5.         if "%%b"=="歌手" set singer=%%c
  6.     )
  7. ren "%%a" "%%~na-!singer!-!song!%%~xa"
  8. )
复制代码

作者: terse    时间: 2013-5-24 00:40

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,5 delims=',:)" %%i in ('findstr /il "'歌名' '歌手'" "*.KSC"') do (
  3.     if defined str (
  4.        echo ren "%%i" "%%~ni-!str!-%%j%%~xi"
  5.        set str=
  6.     ) else set str=%%j
  7. )
  8. pause
复制代码

作者: bear123    时间: 2013-5-24 06:49

谢谢,两位高手帮忙,我先试一下效果。
万分感谢。
作者: bear123    时间: 2013-5-24 06:51

就是我的要效果,谢谢,太感谢了。谢谢两位高手。
作者: BAT-VBS    时间: 2013-5-24 11:01

回复 5# bear123


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。




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