USBメモリーにJW環境を入れて持ち歩く・・・
というお題ですこし書こうとおもう。
自分ではいろんなOS下で試せるわけではないので、
完全に無保証自己責任と言うことで読んでほしい。
まず最初にやる事は・・・
JWWや図形・オプション・外部変形などをUSBメモリー
(以下単にメモリと表記する)にコピーする事だろう。
次に行うのは・・自分の現在のレジストリをメモリーに
保存する事だ。コマンドプロンプトからなら・・・
(スタート>ファイル名を指定して実行>cmd と入力)
(OSによってはcmdじゃなくて・・command かも・・・)
regedit /E *:\jwreg.reg HKEY_CURRENT_USER\Software\Jw_cad
*:\はメモリーのドライブ
と、するか・・ お勧めは・・・
メモリーにgetjwreg.batとでもして・・・
regedit /E jwreg.reg HKEY_CURRENT_USER\Software\Jw_cad
の1行のバッチをこさえて、エクスプローラーから実行する。
と、メモリー上にjwreg.regというレジストリファイルができる。
このレジストリファイルを持ち歩くわけなんだが・・・
このときに相手の環境がわかっていればよいのだが・・・
汎用と考えるのなら・・・自分の環境を一度XGA(1024×768)にして、
そこで、JWの画面を再構成しておいた状況でのregファイルをとって
おいたほうがよいかもしれない。
次に、相手先で実行するバッチを書こう。
startjw.bat とでもしておこうか・・
rem ############# レジストリのバックアップ ###############
regedit /E rjwreg.reg HKEY_CURRENT_USER\Software\Jw_cad
cd > dir.txt
mawk32.exe -f usstart.awk < dir.txt > s.bat
set awkpath > set.txt
rem ############# 自環境をレジストリへ書き込み ###############
regedit /C jwreg.reg
s.bat
最初に相手のjwwのレジストリ情報をメモリにrjwreg.regとして保存。
ドライブ情報(メモリのドライブレターを)保存。
その情報を元に、usstart.awkでs.batを作成して・・・
自分のレジストリ情報をPCに書き込んで・・・
s.batでJwwを起動する。
って感じの流れだ。
で、usstart.awkで処理しなければならないのは・・・
ドライブレターの情報なのだが、どんなものがあるか考えてみよう。
まずは・・先ほどの自環境のレジストリをノートパッドで見ると・・
[HKEY_CURRENT_USER\Software\Jw_cad\jw_win\Folder]
"TATEGUHEIMEN"="C:\\jww"
"TATEGURITSUMEN"="C:\\jww"
"TATEGUDANMEN"="C:\\jww"
"SENKIGOU"="C:\\jww" ・・・
と、オプションや図形やjwwデータなどのディレクトリ情報がある。
他には・・環境変数AWKPATHの情報も書き換えておかないと、外部変形が
使えないし・・自分の場合はがめらの情報もかきかえないとなぁ・・・
特別な環境変数を使う外部変形とかもあるかもしれないので・・・
その辺は、各自考えてほしい・・・
ってことで・・
usstart.awk は
{
a=$0
}
END{
print "REM "a
printf ("Set awkpath=%sawk;\n",a)
print "set > set.txt"
################### regファイルの追加
if(a=="D:\\"){rfil="D.reg"}
if(a=="E:\\"){rfil="E.reg"}
if(a=="F:\\"){rfil="F.reg"}
if(a=="G:\\"){rfil="G.reg"}
if(a=="H:\\"){rfil="H.reg"}
if(a=="I:\\"){rfil="I.reg"}
if(a=="J:\\"){rfil="J.reg"}
if(a=="K:\\"){rfil="K.reg"}
if(a=="L:\\"){rfil="L.reg"}
if(a=="M:\\"){rfil="M.reg"}
printf(" regedit /C %s \n",rfil)
################### がめらiniの書き換え
ato=a
infil=a "gmela.ini"
outfil=a "jww\\gmela.ini"
while((getline str < infil) > 0){
gsub(/^c:\\/,ato,str)
print str >outfil
}
close(outfil)
###################
while((getline str < "set.txt") > 0){
printf("set %s\n",str) > "resetawkp.bat"
###################
print "cd jww"
print "start jw_win"
}
}
まず、バッチでdir.txtに書かせたドライブレターを変数aにしまい・・
例えばaは"e:\"となっている・・・
awkpathにaにメモリー上でAWKをしまってあるディレクトリawkを付けて・・
setは環境変数を読み書きする命令。後でAWKPATHを書き戻すために・・・
で、別にドライブレターによって、あらかじめ作っておいた・・・
例えば・・d.regは・・・
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Jw_cad\jw_win\Folder]
"TATEGUHEIMEN"="d:\\opt"
"TATEGURITSUMEN"="d:\\opt"
"TATEGUDANMEN"="d:\\opt"
"SENKIGOU"="d:\\opt"
"ZUKEI"="d:\\zukei"
"GAIBU"="間仕切壁描画.BAT"
"MOJI"="d:\\data"
"ZFILE"="d:\\opt"
"JWF"="d:\\jww\\"
"JWM"="d:\\jww"
"SENTAKU"="d:\\opt"
"File"="d:\\data"
"FileC"="d:\\data"
"TATEGUDAMNEN"="d:\\opt"
をレジストリに上書きさせる・・・
(こんなニャーいらないよなぁ・・とか思いつつ、d−mまでこさえてある。
ノートパッドで編集できるのでさほど大変なわけじゃない)
がめらの設定ファイルの外変ディレクトリの情報を変えて・・
(あらかじめメモリー環境用にc:\・・として書いておいたものを
メモリーのドライブレターに変えてc:\jwwに書き込む)
環境変数を書き戻すバッチresetawkp.batをこさえといてから・・
Jww起動!
って言うバッチをこさえて・・・
これで、他人のPCで自分のJWWを使える・・・
が、やっぱ、元に戻してやるのが礼儀ってもんで・・
endjw.bat として・・
regedit /C rjwreg.reg
resetawkp.bat
とでもして・・・レジストリを書き戻して・・・
環境変数をsetしなおせばよいかな・・・
そうそう、相手方のPCにJwwがインストされていない場合・・
はレジストリにJwのキーそのものが無かったはずなので・・
nojwreg.reg とかで・・
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Jw_cad\]
というレジストリファイルをこさえといて・・・
nojwreg.batとして・・
regedit /C nojwreg.reg
を実行すれば、キーごと消せるので・・・
これは、別に用意しておいて、その場の判断で・・・
で、注意点とすれば・・・誰にも迷惑の掛からない状況を作って、
実験できるのでなければ、使わない事。
regファイルは、単純なテキストファイルではないので、
いつも使ってるエディタで編集できるとは限らないので、
確認し、使えなさそうならノートパッドを使う事。
失敗しても・・あわてない・・
nojwreg.regをWクリックで一度キーごと消して・・
rjwreg.regをWクリックで書き戻す・・・
って、てもあるので・・・・だめなら謝る(^^;;)
謝って何とかならないところでは使わない。
・・・っははは、でも関係ないところで・・
「あいつが使ってから調子悪い・・」とか
言いそうな相手のところでは使わないってのはあるよな。