以下是实现以上功能的 AutoHotkey 代码:

#SingleInstance force

; 设置热键 Ctrl+Shift+T,用于处理字幕文件
^+T::
    ; 获取当前剪贴板中的文本
    Clipboard := ""
    SendInput, ^c
    ClipWait, 1

    ; 如果剪贴板中没有文本,则提示并退出
    if (Clipboard = "")
    {
        MsgBox, 剪贴板中没有文本!
        return
    }

    ; 以换行符为分隔符,将剪贴板中的文本分割成数组
    lines := StrSplit(Clipboard, `n`)

    ; 遍历数组,处理时间码
    for index, line in lines
    {
        ; 如果当前行是时间码行
        if (RegExMatch(line, "\d+:\d+:\d+,\d+ --> \d+:\d+:\d+,\d+"))
        {
            ; 如果不是第一行,则将上一行的结束时间设置为当前行的开始时间
            if (index > 1)
            {
                lines[index - 1] := RegExReplace(lines[index - 1], "\d+:\d+:\d+,\d+", RegExReplace(line, "(\d+:\d+:\d+,\d+) --> \d+:\d+:\d+,\d+", "$1"))
            }
        }
    }

    ; 将处理后的文本写回剪贴板
    Clipboard := lines.Join(`n`)
    SendInput, ^v
return

使用方法:

  1. 将上述代码复制到 AutoHotkey 的脚本文件中,并保存;
  2. 运行 AutoHotkey 脚本;
  3. 将带时间码的字幕文本复制到剪贴板中;
  4. 按下 Ctrl+Shift+T 热键,等待程序处理并将结果写回剪贴板;
  5. 将处理后的文本粘贴到需要的地方。

原文地址: https://www.cveoy.top/t/topic/oM0K 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录