返回列表 发帖

请求删除此帖,废弃无用了请求删除此帖,废弃无用了

本帖最后由 cl2039996 于 2022-5-8 16:25 编辑

请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了

本帖最后由 zaqmlp 于 2022-3-29 18:38 编辑

bat存为ANSI/GB2312编码
/*&cls&echo off&cd /d "%~dp0"&mode con lines=5000
set "minsec=60"
set "oldfolder=E:\父文件夹"
set "newfolder=%oldfolder%_循环"
if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&goto end)
for /f "delims=" %%a in ('dir /a-d-h/b/s "%oldfolder%\*.mp4"') do (
    for /f "tokens=1,2,3,4 delims=|" %%a in ('ffmpeg -i "%%a" 2^>^&1^|cscript -nologo -e:jscript "%~f0" "%minsec%" "%%a" "%oldfolder%" "%newfolder%"') do (
        if not exist "%%~dpd" md "%%~dpd"
        echo;duration=%%a
        echo;concat=%%b
        echo;filelist=%%c
        echo;output="%%d"
        echo;---------------------
        ffmpeg -hide_banner -y %%c -filter_complex "[0:0][0:1][1:0][1:1]concat=n=%%b:v=1:a=1" "%%d"
        echo;=================================
        echo;
        echo;
    )
)
:end
pause
exit
*/
var fso=new ActiveXObject('Scripting.FileSystemObject');
var minsec=Number(WSH.Arguments(0));
var s=0;
while(!WSH.StdIn.AtEndOfStream){
    var line=WSH.StdIn.ReadLine();
    var m=line.match(/ Duration *: *(\d+):(\d+):(\d+)/);
    if(m){
        s=3600*Number(m[1])+60*Number(m[2])+1*Number(m[3]);
        break;
    }
}
if(s>0){
    var arr=[];
    t=Math.ceil(minsec/s);
    for(var i=1;i<=t;i++){
        var f='-i "'+WSH.Arguments(1)+'"';
        arr.push(f);
    }
    var filelist=arr.join(' ');
    var newfile=WSH.Arguments(3)+WSH.Arguments(1).substring(WSH.Arguments(2).length);
    WSH.echo(s.toString()+'|'+arr.length.toString()+'|'+filelist+'|'+newfile)
}COPY
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复 2# zaqmlp


    尊敬的大佬,代码运行无误。对您深表敬佩!
目前这句代码让我有点疑惑:
set "oldfolder=E:\父文件夹"COPY
文件路径写成确定的了,当然我也能修改这个路径。但是我初心是想着bat放在某个父文件夹里就会对该父文件夹里的所有子文件夹开始操作。
而目前您的写法让我不得不每次修改上面的oldfolder。当然可能有我觉察不到的难处。
您如果觉得方便的话,还请您给改成bat自动识别它所处的父文件夹的名字与路径,然后开始对子文件夹们工作。
如果您觉得牵一发而动全身比较难办。就算了。我可以每次用的时候自己再修改路径。

TOP

返回列表