《USBメモリーでJWWを持ち歩く》

 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クリックで書き戻す・・・

って、てもあるので・・・・だめなら謝る(^^;;)

謝って何とかならないところでは使わない。

・・・っははは、でも関係ないところで・・

「あいつが使ってから調子悪い・・」とか

言いそうな相手のところでは使わないってのはあるよな。