Autohotkey 尝试将剪贴板值与变量值进行比较,以删除某些文本并将其余文本复制到一个窗口
注意下面的if语句。我正在将终端输出复制到剪贴板。它包含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
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工具包中的编码。我假设您是这样大家都明白,我不明白。我的旅程才刚刚开始。