如何用批处理命令删除字幕文档(srt文件)中指定内容?

如何用批处理命令删除字幕文档(srt文件)中指定内容?,第1张

发现你的文件是UTF8的,所以需要先转码到ANSI才能让批处理识别代码

第一段代码请保存为 switch.vbs,(由于第二段代码写死了,请注意名称别错了)

set fso = CreateObject("Scripting.FileSystemObject")

FileList = ""

for each oFile in fso.GetFolder(".").Files

    if LCase(fso.GetExtensionName(oFile.Path)) = LCase("srt") then

        FileList = FileList & oFile.Path & vbCrLf

    end if

next

Files = Split(FileList, vbCrLf)

for i=0 to UBound(Files)-1 

    'U8ToU8Bom Files(i) 

    U8ToAnsi Files(i)

next

function U8ToU8Bom(strFile)

    dim ADOStrm

    Set ADOStrm = CreateObject("ADODB.Stream")

    ADOStrm.Type = 2

    ADOStrm.Mode = 3

    ADOStrm.CharSet = "utf-8"

    ADOStrm.Open

    ADOStrm.LoadFromFile strFile

    ADOStrm.SaveToFile strFile & ".u8.txt", 2

    ADOStrm.Close

    Set ADOStrm = Nothing

end function

function U8ToAnsi(strFile)

    dim ADOStrm

    dim s

    Set ADOStrm = CreateObject("ADODB.Stream")

    ADOStrm.Type = 2

    ADOStrm.Mode = 3

    ADOStrm.CharSet = "utf-8"

    ADOStrm.Open

    ADOStrm.LoadFromFile strFile

    s = ADOStrm.ReadText

    ADOStrm.Position = 0

    ADOStrm.CharSet = "gbk"

    ADOStrm.WriteText s

    ADOStrm.SetEOS

    ADOStrm.SaveToFile strFile & ".tmp", 2

    ADOStrm.Close

    Set ADOStrm = Nothing

end function

第二段代码请保存为sw.bat文件

@echo off

"%~dp0switch.vbs" 

for /f "delims=*" %%i in ('dir /b *.srt') do ( 

findstr /v "00:00:08,000" "%%i.tmp" | findstr /v "HFF0000" | findstr /v "录 制:" |findstr /v "压 制:" | findstr /v "本资源仅供学习交流" >>tmp

move tmp "new_%%i" 

)

del /s /q /f *.tmp 1>nul 2>nul

pause

两个文件都放在与字母同一个文件夹内,只要执行sw.bat即可在当前目录生成修改后的文件:new_原文件名.srt


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/8893104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存