2011/08/11

環境変数を高度に扱う penv を公開

 
Windows7 の方はスルー下さい。
 
Windows XP, Vista 向けに環境変数を高度に制御できる penv を公開しました。
本コマンドを利用すると プロセスの出力値をそのまま環境変数に代入する事が
できます。
 
実例を見てみましょう。
 
penv ZZZ_HOGE=`dir`
 
上記のようにすると ZZZ_HOGE という変数に dir の出力全てを代入します。
バッククォートを用いる事で、シェルを実行します。Linux みたいですね。
 
またパイプにも独自に対応したので、以下のような利用も可能です。
 
penv "ZZZ_HOGE=`dir | find \"exe\"`"
 
dir コマンドで出力したのを find コマンドで exe キーワードでフィルターを
かけてます。フィルター後の値が ZZZ_HOGE に代入されますね。
 
現段階では環境変数の展開は実装していないのですが、現在のディレクトリを
環境変数に設定する方法は以下の通り。
 
◆標準コマンドの場合 
set  ZZZ_HOGE=%cd%
 
◆penv コマンドの場合 
penv ZZZ_HOGE=`cd`
 
環境変数の展開は、必要性を感じなかったので今回実装しませんでした。
 
と思ってたのですが、シェルの方が勝手に展開してくれてるようです。
完全ではありませんが penv でも set の方法が使えます。
 
最後に java ソースファイルからパッケージを環境変数にぶち込む方法の紹介。
 
rem 目的のソースファイルからパッケージ名を取得
penv "PACKAGE=`type Main.java | find \"package\"`"

rem package キーを取り除き、スラッシュに置換&ゴミ削除
set PACKAGE=%PACKAGE:~8%
set PACKAGE=%PACKAGE:.=/%
set PACKAGE=%PACKAGE:;=%
set PACKAGE=%PACKAGE: =%

 
rem  確認する
penv PACKAGE
 
上記は Main.java と決め打ちにしてますが dir /b /s *Main*java とする事で、
サブディレクトリから Main という単語が入っている java クラスを探し出し、
パッケージ名を生成する事も可能です。

0 件のコメント:

コメントを投稿