2017-02-17 19 views
0

ご協力いただければ幸いです。autohotkeyテキストファイル内の複数の変数を検索して置換する

私は約20の異なる変数を持つルータを設定するために使用する、特殊な設定シートを持っています。私は検索と置換を行うためにAutohotkeyと共にNotepad ++を使い終わった。

それはポイントを作るだろうと私は短いリストが含まれます。私の設定シートで

は、私が検索し、これらの変数は、ラベル、設定の更新や電子メールを作成するために、さらにAutoHotkeyをスクリプトを作成するファイルalloverが列挙されているファイルをその中にこれらの変数を交換したいです。

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 
} 

メモ帳++と一緒に使用して検索と置換を行ってこれを行うには、このようなものを作成する必要がありました。

;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 
} 
関連する問題