繁体   English   中英

自动热键搜索并替换文本文件中的多个变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM