[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
将bat脚本保存为UTF8编码,保证srt文件名规则
  1. @echo off
  2. chcp 65001
  3. set "initialtamp=00:00:00,000"
  4. set "arrow=-->"
  5. set /a point=15
  6. setlocal EnableDelayedExpansion
  7. for %%i in (%*) do (
  8.     (for /f "skip=2 tokens=1-4 delims=] " %%a in ('find /v /n "" %%i') do (
  9.         echo,"%%c"|find /i "!arrow!" >nul&&(
  10.         call :mod "%%b" "%%d" timetamp
  11.         set "mark=1"
  12.         echo,!timetamp!)||(
  13.         echo,%%b%%c%%d)
  14.         ))>%%i.temp
  15.     move /y "%%~i.temp" %%i
  16.     set "initialtamp=!tamp2!"
  17.     set "mark="
  18.     )
  19. pause&exit
  20. :mod
  21. if not defined mark (
  22.     set "tamp1=!initialtamp!") else (
  23.     for /f "tokens=1-2 delims=," %%x in (%1) do (
  24.         for /f "tokens=* delims=0" %%i in ("%%y") do (
  25.             set /a quotient=%%i/20,remainder=%%i%%20
  26.             if !remainder! gtr !point! set /a quotient+=1
  27.             set /a round=quotient*20+1000
  28.             )
  29.         set "tamp1=%%x,!round:~1!"
  30.         )
  31.     )
  32. for /f "tokens=1-2 delims=," %%x in (%2) do (
  33.     for /f "tokens=* delims=0" %%i in ("%%y") do (
  34.         set /a quotient=%%i/20,remainder=%%i%%20
  35.         if !remainder! geq !point! set /a quotient+=1
  36.         set /a round=quotient*20+1000
  37.         )
  38.     set "tamp2=%%x,!round:~1!"
  39.     )
  40. set "%3=!tamp1! !arrow! !tamp2!"
复制代码

TOP

TOP

本帖最后由 buyiyang 于 2024-5-18 00:58 编辑

不要意思,之前把“将第一条字幕末尾取余的时间直接覆盖到第二条字幕的开头”理解成了“将第一个字幕文件末尾取余的时间直接覆盖到第二个字幕文件的开头”了。可以批量拖放处理
  1. @echo off
  2. chcp 65001>nul
  3. set "initialtamp=00:00:00,000"
  4. set "arrow=-->"
  5. set /a point=11
  6. setlocal EnableDelayedExpansion
  7. for %%i in (%*) do (
  8.     echo,%%i
  9.     (for /f "skip=2 tokens=1-4 delims=] " %%a in ('find /v /n "" %%i') do (
  10.         if not "%%d"=="" (
  11.         call :mod "%%d" timetamp
  12.         set "mark=1"
  13.         echo,!timetamp!) else (
  14.         echo,%%b%%c%%d)
  15.         ))>"%%~i.temp"
  16.     move /y "%%~i.temp" %%i
  17.     set "mark="
  18.     )
  19. pause&exit
  20. :mod
  21. if not defined mark (set "tamp1=!initialtamp!") else (set "tamp1=!tamp2!")
  22. for /f "tokens=1-2 delims=," %%x in (%1) do (
  23.     for /f "tokens=* delims=0" %%i in ("%%y") do (
  24.         set /a quotient=%%i/20,remainder=%%i%%20
  25.         if !remainder! geq !point! set /a quotient+=1
  26.         set /a round=quotient*20+1000
  27.         )
  28.     set "tamp2=%%x,!round:~1!"
  29.     )
  30. set "%2=!tamp1! !arrow! !tamp2!"
复制代码

TOP

  1. @echo off
  2. chcp 65001>nul
  3. set "initialtamp=00:00:00,000"
  4. set "arrow=-->"
  5. set /a point=11
  6. setlocal EnableDelayedExpansion
  7. for %%i in (%*) do (
  8.     echo,%%i
  9.     (for /f "skip=2 tokens=1-4* delims=] " %%a in ('find /v /n "" %%i') do (
  10.         if "%%c"=="!arrow!" (
  11.             call :mod "%%d" timetamp
  12.             set "mark=1"
  13.             echo,!timetamp!) else (
  14.             echo,%%b %%c %%d %%e)
  15.         ))>"%%~i.temp"
  16.     move /y "%%~i.temp" %%i
  17.     set "mark="
  18.     )
  19. pause&exit
  20. :mod
  21. if not defined mark (set "tamp1=!initialtamp!") else (set "tamp1=!tamp2!")
  22. for /f "tokens=1-2 delims=," %%x in (%1) do (
  23.     for /f "tokens=* delims=0" %%i in ("%%y") do (
  24.         set /a quotient=%%i/20,remainder=%%i%%20
  25.         if !remainder! geq !point! set /a quotient+=1
  26.         set /a round=quotient*20+1000
  27.         )
  28.     set "tamp2=%%x,!round:~1!"
  29.     )
  30. set "%2=!tamp1! !arrow! !tamp2!"
复制代码
回复 10# hhl1010

TOP

返回列表