Board logo

标题: 请求删除此帖,废弃无用了请求删除此帖,废弃无用了 [打印本页]

作者: cl2039996    时间: 2022-3-29 17:45     标题: 请求删除此帖,废弃无用了请求删除此帖,废弃无用了

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

请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了请求删除此帖,废弃无用了
作者: zaqmlp    时间: 2022-3-29 18:36

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

bat存为ANSI/GB2312编码
  1. /*&cls&echo off&cd /d "%~dp0"&mode con lines=5000
  2. set "minsec=60"
  3. set "oldfolder=E:\父文件夹"
  4. set "newfolder=%oldfolder%_循环"
  5. if not exist "%oldfolder%" (echo;"%oldfolder%" 未找到&goto end)
  6. for /f "delims=" %%a in ('dir /a-d-h/b/s "%oldfolder%\*.mp4"') do (
  7.     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 (
  8.         if not exist "%%~dpd" md "%%~dpd"
  9.         echo;duration=%%a
  10.         echo;concat=%%b
  11.         echo;filelist=%%c
  12.         echo;output="%%d"
  13.         echo;---------------------
  14.         ffmpeg -hide_banner -y %%c -filter_complex "[0:0][0:1][1:0][1:1]concat=n=%%b:v=1:a=1" "%%d"
  15.         echo;=================================
  16.         echo;
  17.         echo;
  18.     )
  19. )
  20. :end
  21. pause
  22. exit
  23. */
  24. var fso=new ActiveXObject('Scripting.FileSystemObject');
  25. var minsec=Number(WSH.Arguments(0));
  26. var s=0;
  27. while(!WSH.StdIn.AtEndOfStream){
  28.     var line=WSH.StdIn.ReadLine();
  29.     var m=line.match(/ Duration *: *(\d+):(\d+):(\d+)/);
  30.     if(m){
  31.         s=3600*Number(m[1])+60*Number(m[2])+1*Number(m[3]);
  32.         break;
  33.     }
  34. }
  35. if(s>0){
  36.     var arr=[];
  37.     t=Math.ceil(minsec/s);
  38.     for(var i=1;i<=t;i++){
  39.         var f='-i "'+WSH.Arguments(1)+'"';
  40.         arr.push(f);
  41.     }
  42.     var filelist=arr.join(' ');
  43.     var newfile=WSH.Arguments(3)+WSH.Arguments(1).substring(WSH.Arguments(2).length);
  44.     WSH.echo(s.toString()+'|'+arr.length.toString()+'|'+filelist+'|'+newfile)
  45. }
复制代码

作者: cl2039996    时间: 2022-3-29 21:24

回复 2# zaqmlp


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




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