非常感谢任何帮助。
我有一个专门的配置表,用于配置具有大约20个不同变量的路由器。我最终使用Notepad ++和Autohotkey进行搜索和替换。
我将列出一个简短的清单,因为它会说明问题。
在我的配置表中,我想在其中搜索并替换这些变量,文件中列出这些变量,以创建更多的Autohotkey脚本来创建标签,配置更新和电子邮件。
工作单
srwnumber
新设备
旧设备
老毂
新的资产
新串行
我想弄清楚的是有一段代码可以遍历列表并替换搜索和替换变量。
我不知道如何正确地进行数组和循环,但我这样做的想法是这样的 用于搜索和替换的变量列表 因此收件箱变量将是一个变量,问题也是如此。然后我可以在变量更新的同时循环遍历问题。
这样我就可以随时添加和删除变量,而无需拥有庞大的硬编码列表。
::ncvorep::
SetKeyDelay, 75,75
null := ""
inputbox, variable1v, variable2v
If %variable1v% <> %null%
{
send ^h
send Workorder{tab}{+tab}
send Workorder{space}%variable1v%
send !a
}
; this blanks out the variable if the variable1v is blank.
else if workorderv = %null%
{ send ^h
send workorder {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
更多信息。
::ncvorep::
SetKeyDelay, 75,75
null := ""
inputbox, workorderv, Enter Work Order #
If workorderv <> %null%
{
send ^h
send workorder{tab}{+tab}
send workorder{space}%workorderv%
send !a
}
else if workorderv = %null%
{ send ^h
send workorder {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
我必须创建这样的东西,以便与Notepad ++一起使用来搜索和替换以完成它。
;Last update Tue, Feb 14, 2017 15 18 03:18:47 PM
#SingleInstance force
#Warn
; template to setup cvo search and replace segment.
::ncvorep::
SetKeyDelay, 75,75
null := ""
inputbox, workorderv, Enter Work Order #
If workorderv <> %null%
{
send ^h
send workorder{tab}{+tab}
send workorder{space}%workorderv%
send !a
}
else if workorderv = %null%
{ send ^h
send workorder {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, srwnumberv, Enter Service Order #
If srwnumberv <> %null%
{
send ^h
send srwnumber{tab}{+tab}
send srwnumber{space}%srwnumberv%
send !a
}
else if srwnumberv = %null%
{ send ^h
send srwnumber {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, new-devicev, Enter New Device Name #
If new-devicev <> %null%
{
send ^h
send new-device{tab}{+tab}
send new-device{space}%new-devicev%
send !a
}
else if new-devicev = %null%
{ send ^h
send new-device {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, old-devicev, Enter Old Device Name #
If old-devicev <> %null%
{
send ^h
send old-device{tab}{+tab}
send old-device{space}%old-devicev%
send !a
}
else if old-devicev = %null%
{ send ^h
send old-device {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, old-hubv, Enter Old Connecting Device #
If old-hubv <> %null%
{
send ^h
send old-hub{tab}{+tab}
send old-hub{space}%old-hubv%
send !a
}
else if old-hubv = %null%
{ send ^h
send old-hub {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, new-assetv, Enter New Asset #
If new-assetv <> %null%
{
send ^h
send new-asset{tab}{+tab}
send new-asset{space}%new-assetv%
send !a
}
else if new-assetv = %null%
{ send ^h
send new-asset {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
null := ""
inputbox, new-serialv, Enter New Serial Number #
If new-serialv <> %null%
{
send ^h
send new-serial{tab}{+tab}
send new-serial{space}%new-serialv%
send !a
}
else if new-serialv = %null%
{ send ^h
send new-serial {tab}{+tab}
send ^a
send {backspace}
send !a
Exit
}
return
答案 0 :(得分:0)
假设我理解这个问题,下面的解决方案可能更合适。基本上它会复制到剪贴板中,无论文本在最前面的窗口中是什么,迭代字典并将匹配的键替换为它们的值,然后将修改后的内容粘贴回来。
警告: 如果文档太大,复制到剪贴板可能会在旧系统上遇到一些性能问题。
F11::
{
Send, ^a
Send, ^c
replace := {"workorder":"not_workorder","srwnumber":"not_srwnumber","new-device":"not_new-device","old-device":"etc"}
For start, end in replace {
StringReplace, clipboard, clipboard, %start%, %end%, All
}
Send, ^v
}