2017-02-17 4 views
0

Любая помощь будет принята с благодарностью.autohotkey поиск и замена нескольких переменных в текстовом файле

У меня есть специальный лист конфигурации, который я использую для настройки маршрутизаторов, имеющих около двадцати разных переменных. Я закончил использование Notepad ++ вместе с Autohotkey, чтобы выполнить поиск и заменить.

Включая короткий список, так как он сделает точку.

В моем листе конфигурации я хочу найти и заменить эти переменные внутри него, чтобы эти переменные были перечислены в списке для создания дополнительных сценариев Autohotkey для создания ярлыков, обновлений конфигурации и электронной почты.

WorkOrder
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

Предполагая, что я понимаю проблему, решение ниже может быть предпочтительным. В основном он копирует в буфер обмена любой текст, находящийся в главном окне, перебирает словарь и заменяет соответствующие ключи своими значениями, а затем вставляет измененное содержимое обратно.

Оговорка: Если документ слишком велик, копирование в буфер обмена могут столкнуться некоторые проблемы с производительностью на старых системах.

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 
} 
Смежные вопросы