推广 热搜: 礼光  歌曲  酒水  系统  GPS  方案  点名  车辆  解决方案  礼光点歌系统V9 
注册会员送广告活动

批处理批量改礼光点歌系统歌曲文件名

   日期:2014-09-20     来源:admin    作者:admin    浏览:4454    评论:0    
核心提示:歌曲是由歌曲名跟KSC文件组成,如:100.wmv和100.ksc 但是100.wmv这首歌的真实名字是(第一次爱的人),因为用记事本打开100.ksc

歌曲是由歌曲名跟KSC文件组成,如:100.wmv和100.ksc 但是100.wmv这首歌的真实名字是(第一次爱的人),因为用记事本打开100.ksc 里面是这样写的
// 歌曲附加信息(便于检索)
karaoke.tag('歌名', '第一次爱的人');
karaoke.tag('缩写', 'DYCADR');
karaoke.tag('歌手', '光良');
karaoke.tag('字数', '6');
karaoke.tag('语种', '国语');
karaoke.tag('歌类', '其它');
karaoke.tag('电影', 'false');
karaoke.tag('风格', '流行');
karaoke.tag('流行', 'true');
karaoke.tag('音量', '80');
karaoke.tag('声道', '21');
karaoke.tag('FMP声道', '32');
karaoke.tag('语音', '0');
karaoke.tag('介质', 'true');
karaoke.tag('时间', '2009-10-19');
karaoke.tag('歌星拼音', 'GL');
karaoke.mtvmode :=true;
karaoke.videofilename := '';
karaoke.audiofilename := '*.wav';
karaoke.XSDVideoMode := 4;
karaoke.CommonVideo := '100.wmv';
我想用批处理来读取所有的KSC文件,再把相应的歌曲改回真实的歌曲名,不知道可行不
问题补充:
重命名后为歌手名字-歌曲名字。如:光良-第一次爱的人
歌库有RMVB WMV两种格式
最佳答案
更新:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s/b *.ksc') do (
        for /f "tokens=4 delims=',()" %%j in ('find "歌名" "%%~i"') do (
                set "sng=%%~j"
        )
        for /f "tokens=4 delims=',()" %%j in ('find "歌手" "%%~i"') do (
                set "snger=%%~j"
        )
        set "sng_title=!snger!-!sng!"
        for /f "delims=" %%k in ('type "%%~i"') do (
                set "foo=%%~k"
                call,set foo=%%foo:%%~ni=!sng_title!%%
                echo/!foo!
        )>>"%%~fi_"
        move "%%~fi_" "%%~fi"
        if exist "%%~dpni.wmv" (
           ren "%%~dpni.wmv" "!sng_title!.wmv"
           ren "%%~fi" "!sng_title!.ksc"
         ) else (
           ren "%%~dpni.rmvb" "!sng_title!.rmvb"
           ren "%%~fi" "!sng_title!.ksc"
         )
)
exit
此代码已经增加了重命名KSC文件,如果不需要的话,请将:ren "%%~fi" "!sng_title!.ksc"{两处}删除。
改了歌曲名(100.wmv),那100.kcs中的内容最后一行中(karaoke.CommonVideo := '100.wmv';)的歌曲名100.wmv用不用改呢?如果不改是否能正常运转呢?
给你改了,建议你先做好备份在测试。
----------------------
@echo off&setlocal Enabledelayedexpansion
for /f "delims=" %%a in ('dir /a-d/b *.ksc') do (
for /f "tokens=1-4 delims='" %%i in ('type "%%a"^|find /i "歌名"') do (
for /f "tokens=1,2 delims='" %%b in ('type "%%a"^|find /i "CommonVideo"') do (
Ren "%%c" "%%l.wmv"
for /f "delims=" %%d in ('more /s "%%a"') do (
set R0=%%d
for /f "delims=" %%e in ('echo %%d^|find /i "CommonVideo"') do set R0=karaoke.CommonVideo := '%%l.wmv';
echo !R0!>>temp22222ok.txt
)
ren "%%a" "%%a[Rui01]"
ren "temp22222ok.txt" "%%a"
)))
pause
仅改歌曲文件名:
@echo off
for /f "delims=" %%a in ('dir /a-d/b *.ksc') do (
for /f "tokens=1-4 delims='" %%i in ('type "%%a"^|find /i "歌名"') do (
for /f "tokens=1,2 delims='" %%b in ('type "%%a"^|find /i "CommonVideo"') do (
Ren "%%c" "%%l.wmv"
)))
pause
使用方法,将该批处理放在你需要重命名的文件夹下,然后双击就可以了。
@ECHO OFF
COLOR 0a
for /f "tokens=*" %%a in (
 'dir *.ksc /a-d /b'
) do (
 SETLOCAL ENABLEDELAYEDEXPANSION
 rem 取得文件名
 for /f "tokens=1,2,* delims='" %%A in (
 'findstr "karaoke.CommonVideo" "%%a"'
 ) do (
 rem 取得歌曲名
 for /f "tokens=1-26 delims='" %%H in (
   'findstr "歌名" "%%a"'
 ) do (
   rem 重命名
   echo 正在将 "%%~B" 重命名为 "%%~nK%%~xB"
   ren "%%~B" "%%~nK%%~xB"
 )
 )
 ENDLOCAL
)
PAUSE
 
打赏
 
更多>同类帮助
0相关评论

推荐图文
推荐帮助
点击排行

https://www.west.cn/vcp/vcp_img/free6/B/960x60_B.jpg
 
 

关闭

关闭