发现你的文件是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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)