利用批處理導出音頻文件的時長

通過JS獲取時長,傳遞給批處理處理。

@set @n=0; /* & echo off
cd d:\test
for /f "tokens=1,2 delims==" %%a in ('dir /b/s *.mp3^|cscript -nologo -e:jscript "%~0"') do (
 set "f=%%b"
 set /a h=%%a/3600+100,m=%%a%%3600/60+100,s=%%a%%60+100
 setlocal enabledelayedexpansion
 echo !f! !h:~1!:!m:~1!:!s:~1!
 endlocal
)
pause & exit/b & rem */
//jscript代碼
WMP = new ActiveXObject("WMPlayer.OCX");
while(!WScript.StdIn.AtEndOfStream) {
f = WScript.StdIn.ReadLine();
t = WMP.newMedia(f).getItemInfo("Duration");
t = parseInt(t)
WScript.Echo(t + "=" + f)
}

將獲取到的秒數取整后傳遞給批處理處理。后來發(fā)現大神apang的方法更好。

apang的代碼

WMPlayer.OCX

@set @n=0; /* & echo off
dir /a-d /b /s *.mp3 | cscript -nologo -e:jscript "%~0"
pause & exit/b & rem */
//jscript代碼
WMP = new ActiveXObject("WMPlayer.OCX");
while(!WScript.StdIn.AtEndOfStream) {
f = WScript.StdIn.ReadLine();
t = WMP.newMedia(f).getItemInfo("Duration");
hh = Math.floor(t/3600)+100;
mm = Math.floor(t%3600/60)+100;
ss = Math.floor(t%60)+100;
t = (hh + ":" + mm + ":" + ss).replace(/\d(\d\d)/g, "$1");
WScript.Echo(t)
}

Shell.Application

@set @n=0;/* & echo off
dir /a-d /b /s *.mp3 | cscript -nologo -e:jscript "%~0" > List.txt
pause & exit/b & rem */
//jscript代碼
objShell = new ActiveXObject("Shell.Application");
while(!WScript.StdIn.AtEndOfStream) {
f = WScript.StdIn.ReadLine();
objFolder = objShell.NameSpace(f.replace(/^(.+)\\.+$/, "$1"));
objItem = objFolder.ParseName(f.replace(/^.+\\(.+)$/, "$1"));
t = objFolder.GetDetailsOf(objItem, 27);
WScript.Echo(f + " " + t);
}

第三方處理

@echo off
setlocal enabledelayedexpansion
cd z:\
(for /f "delims=" %%i in ('dir /b *.mp3') do (
    for /f "tokens=3 delims=," %%j in ('tag.exe "%%i" 2^>^&1 ^| findstr "playtime"') do (
        set pt=%%j
        set pt=!pt: playtime =!
        echo %%i^=!pt!
    )
))>tag.txt

關于2^>^&1 ^|的說明:
Bathome老大Batcher的回復:

大部分命令執(zhí)行的結果可以直接通過管道傳遞給后面的命令進行后續(xù)操作:
xxx | findstr "playtime"

tag比較特殊,它的輸出在2號句柄,所以需要重定向到1號句柄,然后再通過管道傳遞:
tag.exe "%%i" 2>&1 | findstr "playtime"

for命令里面需要對特殊字符進行轉移,所以就變成了:
tag.exe "%%i" 2>&1 ^| findstr "playtime"

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容