给一个不调用ffprobe.exe的bat+jscript混编版本,直接调用windows系统内置的fso功能获取媒体文件属性(如时长),与用ffprobe.exe/mediainfo.exe等外部方法对比可明显提速(尤其是大目录操作),因批处理脚本调用后者是逐个文件处理,而前者能一次性批量处理。
以下代码可存为test.bat,将一级目录拖给它即可,完成一级目录及其子目录的更名》源目录名【时长】。- @set @v=1 /*
- @echo off
- if "%~1"=="" (exit/b) else (setlocal enabledelayedexpansion)
- (for /f "delims=" %%D in (' dir /b/s/ad "%~1" ') do (
- for /f %%v in (' " dir/b/s/a-d "%%~D\*.mp4"|cscript /e:jscript "%~f0" " ') do (set "m=%%v")
- set/a "mm+=!m!" & ren "%%~D" "%%~nxD【!m!】"
- )
- ren "%~1" "%~nx1【!mm!】" & endlocal & exit/b) 2>nul
- */
- m = s = ms = sm = 0, ws = WSH.stdin, sa = WSH.createobject('shell.application');
- while (!ws.atendofstream) {
- F = ws.readline(); i = F.lastIndexOf('\\'), pF = F.substr(0,i+1), nF = F.substr(i+1);
- ns = sa.namespace(pF), pn = ns.parsename(nF); d = ns.getdetailsof(pn,27).split(':');
- m += ~~d[0]*60 + ~~d[1]; s += ~~d[2];
- }
- WSH.echo(m+=Math.ceil(s/60));
复制代码
|