[Asm] 纯文本查看 复制代码 ; AutoHotkey v1.1 脚本
; 功能:处理剪贴板内容,只保留包含 [error] 的行,然后复制回剪贴板
^e:: ; 快捷键 Ctrl+E 触发
; 保存当前剪贴板内容
OldClipboard := ClipboardAll
; 获取当前剪贴板文本
Clipboard := "" ; 清空剪贴板
Send, ^c ; 复制选中的内容
ClipWait, 1 ; 等待剪贴板有内容
if ErrorLevel {
MsgBox, 等待剪贴板超时,请先选中文本!
return
}
; 处理文本
Text := Clipboard
NewText := ""
; 按行分割处理
Loop, Parse, Text, `n, `r
{
; 检查当前行是否包含 [error](不区分大小写)
if InStr(A_LoopField, "[error]", false) {
; 保留该行
if (NewText = "")
NewText := A_LoopField
else
NewText := NewText . "`n" . A_LoopField
}
}
; 检查是否有结果
if (NewText = "") {
MsgBox, 没有找到包含 "[error]" 的行!
Clipboard := OldClipboard ; 恢复原剪贴板
return
}
; 将处理后的文本复制到剪贴板
Clipboard := NewText
; 可选:显示提示
MsgBox, 已保留包含 [error] 的行,并已复制到剪贴板!
; 恢复原剪贴板(可选,如果不想恢复可以注释掉)
; Clipboard := OldClipboard
return
; 另一个版本:直接处理 Gui 中的 Memo 控件
Gui, Add, Edit, r20 w500 vMemo1, ; 创建多行文本框
Gui, Add, Button, gProcessError, 处理 [error] 行
Gui, Show, , 错误日志处理器
return
ProcessError:
Gui, Submit, NoHide ; 获取控件内容,但不隐藏窗口
NewText := ""
; 按行分割处理
Loop, Parse, Memo1, `n, `r
{
if InStr(A_LoopField, "[error]", false) {
if (NewText = "")
NewText := A_LoopField
else
NewText := NewText . "`n" . A_LoopField
}
}
if (NewText = "") {
MsgBox, 没有找到包含 "[error]" 的行!
return
}
; 更新 Memo 控件
GuiControl, , Memo1, %NewText%
; 复制到剪贴板
Clipboard := NewText
MsgBox, 已保留 %NewText% 行`n并已复制到剪贴板!
return
GuiClose:
ExitApp
简单版本(仅处理剪贴板):
[Asm] 纯文本查看 复制代码 ; AutoHotkey v1.1 简单脚本
; 只保留包含 [error] 的行
^e:: ; Ctrl+E 快捷键
; 复制当前选中的内容
Clipboard := ""
Send, ^c
ClipWait, 1
if ErrorLevel {
MsgBox, 请先选中文本!
return
}
Result := ""
; 逐行处理
for each, Line in StrSplit(Clipboard, "`n", "`r")
{
if InStr(Line, "[error]", false)
Result .= (Result = "" ? "" : "`n") . Line
}
if (Result = "") {
MsgBox, 没有找到包含 [error] 的行
return
}
; 复制结果到剪贴板
Clipboard := Result
MsgBox, 已复制处理后的内容!
return |