Autohotkey 尝试将剪贴板值与变量值进行比较,以删除某些文本并将其余文本复制到一个窗口

Autohotkey 尝试将剪贴板值与变量值进行比较,以删除某些文本并将其余文本复制到一个窗口,autohotkey,Autohotkey,注意下面的if语句。我正在将终端输出复制到剪贴板。它包含RP/0/RSP0/CPU0:cobn9 hub。我想从剪贴板中删除RP/0/RSP0/CPU0:,但是当我尝试向该变量var1添加一个附加字符串时,它确实起作用 var1 := "RP/0/RSP0/CPU0:,mnet-prd-hub" 如果没有,mnet prd hub将删除不需要的文本,但如果我向var1添加其他内容,它将停止工作 我还想删除mnet prd集线器: 从mnet prd hub:/home/data/confi

注意下面的if语句。我正在将终端输出复制到剪贴板。它包含
RP/0/RSP0/CPU0:cobn9 hub
。我想从剪贴板中删除
RP/0/RSP0/CPU0:
,但是当我尝试向该变量
var1
添加一个附加字符串时,它确实起作用

var1  := "RP/0/RSP0/CPU0:,mnet-prd-hub" 
如果没有
,mnet prd hub
将删除不需要的文本,但如果我向
var1
添加其他内容,它将停止工作

我还想删除mnet prd集线器:
mnet prd hub:/home/data/configs/current$/home/data/configs/current$

我尝试过var是否包含
%clipboard”

我试过剪贴板包含
%var1%

我尝试了
I安装
,但运气不佳。
所以我要求一些人的指导

我已经试了好几个小时,运气不好。如果有任何帮助,我将不胜感激

SetTitleMatchMode, 2   
#IfWinActive,  ahk_class VTWin32
::ttwa::
    var1 = 
    var1 :=
    clipboard = ; empty clipboard
    sleep 200
    send !e {enter}
    send s
    send {enter 100}
    sleep 100
    Send {click} 
    sleep 100
    send {click} 
    sleep 100
    send {click} 
    sleep 10
    MsgBox 1st %clipboard%   %var1%
    ;var1 represents a Cisco 9k this script removes var1 puts the proper name in the Title Window
    var1  := "RP/0/RSP0/CPU0:,mnet-prd-hub"
    MsgBox 2nd %clipboard%   %var1%
    ;if  var1 in %clipboard%
    IfInString, var1, %clipboard%
    {
        MsgBox 3rd  %var1%      %clipboard%
        StringReplace, clipboard, clipboard, %var1%,, All
        StringReplace, clipboard, clipboard, #,, all
        MsgBox 4rd  %var1%      %clipboard%
        var1 = 
        var1 :=
        MsgBox 5th   %var1%      %clipboard%
    }
    else 
    {
        MsgBox 6th  %var1%      %clipboard%
        StringReplace, clipboard, clipboard, #, , all
        MsgBox 6th  %var1%      %clipboard%
    }
    sleep 200
    send !s
    sleep 200
    Send w
    send %clipboard% {enter}
    sleep 200
    send !e s {enter}
#IfWinActive
return

我不太确定您在寻找什么,但由于您说在向变量添加字符串时遇到问题,请尝试以下代码,它将向您展示如何在变量中删除和添加文本:

var1  := "RP/0/RSP0/CPU0:,mnet-prd-hub" 
MsgBox, %var1% `n`nClick OK to remove RP/0/RSP0/CPU0: from that string!
var1 := RemoveFromString(var1, "RP/0/RSP0/CPU0:")
MsgBox, %var1% `n`nClick OK to add mnet-prd-hub:/home/data/configs/current$/home/data/configs/current$ to that string!
var1 := AddToString(var1, "mnet-prd-hub:/home/data/configs/current$/home/data/configs/current$")
MsgBox, %var1% `n`nClick OK to remove mnet-prd-hub: from that string!
var1 := RemoveFromString(var1, "mnet-prd-hub:")
MsgBox, %var1%

RemoveFromString(string,stringToRemove) {
    Return StrReplace(string, stringToRemove, "")
}
AddToString(string,stringToAdd) {
    Return string stringToAdd
}
编辑: 那么您想看看var1的内容是否可以在剪贴板中找到? 可以这样做:

If InStr(Clipboard,var1) {
    MsgBox, the contents of var1 were found in the clipboard.
}
编辑2: 像这样

If InStr(Clipboard,var1) {
    Clipboard := RemoveFromString(Clipboard,var1)
}
RemoveFromString(string,stringToRemove) {
    Return StrReplace(string, stringToRemove, "")
}

这很好用一个天才帮了我的忙

Groupadd, TerminalWindows, ahk_class VTWin32
Groupadd, TerminalWindows, ahk_class PuTTY



SetTitleMatchMode, 2   
#If WinActive("ahk_group TerminalWindows")
::ttwa::
    uNames := "mnet-prd-hub:,RP/0/RSP0/CPU0:,RP/0/RSP1/CPU0:"
    Clipboard= ; empty clipboard
    sleep 200
    send !e {enter}
    send s
    send {enter 100}
    sleep 100
    Send {click} 
    sleep 100
    send {click} 
    sleep 100
    send {click} 
    sleep 10

    Loop, Parse, uNames, `,
        clipboard := RegexReplace(clipboard, a_loopfield)

    ; msgbox % clipboard

    if (WinActive("ahk_class VTWin32"))
    {
        sleep 200
        send !s
        sleep 200
        Send w
        send %clipboard% {enter}
        sleep 200
        send !e s {enter}

    } else if (WinActive("ahk_class PuTTY"))
    {
        ; steps for putty
    }
#IfWinActive
return

可能因为使用了旧语法,字符串中的逗号被解释为参数分隔符。请尝试使用语法:
if instr(var1,clipboard)
(此处不需要外圆括号,因为函数是第一个表达式)我将此脚本与teraterm一起使用以重命名窗口标题和选项卡。这样我就知道我在哪个路由器中。感谢您的响应。在测试脚本时,无法在剪贴板中的var1中找到文本。我将此脚本与teraterm一起使用以重命名窗口标题和选项卡,以便知道我登录的设备。出于某种原因iInstance在var1中看不到任何一个元素,它完全跳过了if的第一部分。有人知道如何在www.autohotkey.com上获取帐户吗?似乎有很多信息我无法获取::ttwa::uNames:=“mnet prd hub:,RP/0/RSP0/CPU0:,RP/0/RSP1/CPU0:”循环,解析,uNames,`,剪贴板:=RegexReplace(剪贴板,a_循环字段);msgbox%剪贴板if(WinActive(“ahk_类VTWin32”){sleep 200 send!s sleep 200 send w send%clipboard%{enter}sleep 200 send!e s{enter}}else if(WinActive(“ahk_类PuTTY”){;PuTTY的步骤}如果我在终端会话中,3次单击将把我所在的设备复制到剪贴板。然后我想看看剪贴板中是否有var1值。谢谢你的回复。我使用MsgBox显示变量的内容。有没有更简单的方法来实现这一点。当我三次单击一行时,它将复制到剪贴板中。剪贴板中的内容rd可以包含var1中的文本。如果包含,我希望从剪贴板中复制的文本中删除var1中的任何内容。例如,路由器名称为RP/0/RSP0/CPU0:cobn9 hub。我希望删除var1中的内容,以便剪贴板仅包含cobn9 hub。var1包含var1:=“RP/0/RSP0/CPU0:”,“mnet prd hub"因此,如果RP/0/RSP0/CPU0:在剪贴板中,我想将其删除。或者它mnet prd hub在剪贴板中,或者我添加到var1的任何文本,我都希望将其从剪贴板中删除。如果我不清楚,我会尽我所能。谢谢。很抱歉,我本打算将var1的一部分从文本中删除并复制到剪贴板。RP/0/RSP0/CPU0:是单独复制的使用cobn9 hub,当三次单击发生时,在剪贴板RP/0/RSP0/CPU0:cobn9 hub中看起来是这样的var1包含RP/0/RSP0/CPU0:这是我需要从剪贴板中删除的部分,因此它只显示cobn9-hub。感谢所有帮助我的人,我真的很感激。请查看autohotkey工具包中的编码。我假设您是这样大家都明白,我不明白。我的旅程才刚刚开始。