[英]autohotkey search and replace multiple variables in a text file
任何帮助将不胜感激。
我有一个专门的配置表,用于配置具有大约二十个不同变量的路由器。 我最终使用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
假设我了解问题所在,则以下解决方案可能更可取。 基本上,它将把最前面的窗口中的任何文本复制到剪贴板中,遍历字典并将匹配的键替换为其值,然后将修改后的内容粘贴回去。
注意事项:如果文档太大,则在较旧的系统上复制到剪贴板可能会遇到一些性能问题。
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.