「マクロ登録」のファイルのパス一括置換No.35008
こーりゃん さん 16/05/13 10:02
 
「マクロ登録」で、既存の登録済マクロファイルのパスを一括で置換する方法はあり
ますでしょうか。

すみません、ネットで検索しても方法が見つからなかったので、ご指導頂きたく思い
ます。

よろしくお願い致します。

[ ]
RE:35008 「マクロ登録」のファイルのパスNo.35009
でるもんたいいじま さん 16/05/13 11:53
 
こんにちは。秀丸ユーザの「でるもんた・いいじま」です。

> 「マクロ登録」で、既存の登録済マクロファイルのパスを一括で
> 置換する方法はありますでしょうか。

「マクロファイル用のフォルダ」の直下以外の場所にマクロファイルを
置いていて、そのパスを変更したい、ということでしょうか。

標準にはその機能はないようです。
(正確なところは秀丸担当さんからの回答をお待ちください。)

で、ちょっと調べてみたところ、レジストリの
[HKEY_CURRENT_USER\Software\Hidemaruo\Hidemaru\Assign.dat]
という場所に「Amacro」という変数があり、ここにマクロのファイル名と
パスがバイナリ値で入っているようです。文字コードはShift_JIS、
書式は ファイル名 \0 タイトル \0 ファイル名 \0 …、のようです。
(すいません、自動起動関係は調べていません。)

このデータは、秀丸エディタを全終了(常駐秀丸エディタも含めて)した
ときに更新されるようです。

なので、たとえば次のような方法が考えられます:
    1.何か一つだけ、手作業でマクロファイルのパスを書き換える。
    2.秀丸を全終了、常駐秀丸も終了する。
    3.レジストリエディタで、上記のキーを .reg ファイルに書き出す。
    4.その .reg ファイルを秀丸で開き、\ でエスケープされている
      改行を除去してから、旧パスを新パスに置換して、別ファイル名で
     保存する(万一のときに困るので、上書き保存しないように!)。
     この置換作業のとき、1.で予め新パスにしておいた部分からの
     コピペが可能です。
    5.再び秀丸を全終了、常駐秀丸も終了してから、変更後の .reg
     ファイルをインポートする。

…が、非常に危険かつ面倒ですので、対象のユーザが一人だけで
あれば、コピペを使って手作業で行うことをおすすめします。
逆に、多数のユーザの共有マクロフォルダを変更したいということで
あれば、秀丸マクロ以外でレジストリのバイナリ編集に対応している
プログラミング言語(CやPerlなど)を使うことをおすすめします。

ではでは。

[ ]
RE:35008 「マクロ登録」のファイルのパスNo.35010
秀丸担当 さん 16/05/13 11:58
 

マクロ登録のファイル名は、[マクロ]→[マクロ登録...]のダイアログ上でのフ
ァイル名入力ができますが、一括して置換することはできないです。

ファイルに出力するとしたら、[その他]→[キー割り当て]でキー割り当てと一緒
に保存する方法と、[その他]→[設定内容の保存/復元]で全部保存する方法があ
りますが、いずれもマクロ登録の内容についてはバイナリ情報になっていて、フ
ァイルを編集することは難しいと思います。
レジストリの場所としては
HKEY_CURRENT_USER\Software\Hidemaruo\Hidemaru\Assign.dat
のAmacroにありますが、これも同じくバイナリ情報になっています。

しいてなんとかするとすれば、バイナリ情報をテキスト化して編集できないこと
もないですが、その手間を考えると、マクロ登録ダイアログ上で編集したほうが
簡単だと思います。

[ ]
RE:35010 「マクロ登録」のファイルのパスNo.35011
でるもんたいいじま さん 16/05/13 12:08
 
でるもんた・いいじまです。
行き違いになりました。

> レジストリの場所としては
> HKEY_CURRENT_USER\Software\Hidemaruo\Hidemaru\Assign.dat
> のAmacroにありますが、これも同じくバイナリ情報になっています。
> しいてなんとかするとすれば、バイナリ情報をテキスト化して
> 編集できないこともないですが、

そうですね。レジストリエディタで .reg ファイルを読み書きすると
いう方法は使えそうです。

> マクロ登録ダイアログ上で編集したほうが簡単だと思います。

同意です。

問題は、複数のユーザの「共有マクロフォルダ」の設定を全員ぶん
まとめて編集するケースで、この場合は秀丸マクロ以外の言語で
プログラムを書く必要があります。

で、先ほどの私の投稿の訂正。
| レジストリのバイナリ編集に対応しているプログラミング言語
| (CやPerlなど)を使うことをおすすめします。

C/C++はお勧めしません。\0 の扱いが面倒です。

Perlなら Win32::Registry もしくは Win32::TieRegistry モジュールで
できそうです。これは使ったことがないのでよくわかりません。

WSHは5バイト以上のバイナリ値に対応していないのでアウト。

AutoHotKeyで書いて.exeファイルにコンパイルすることもできます。
この場合はバイナリ値を文字列に変換して処理するのでデバッグ等が
簡単になります。
(AHKはデバッグ・コンパイルに使うマシンにインストールされていれば
 よくて、.exeファイルを実行するマシンにはAHKをインストールする
 必要はありません。)

ではでは。

[ ]