Windowsネイティブでこんなアプリが存在すれば、非常に使えるんじゃないか。
- xmlファイルからの任意情報取得
- iniファイルからの任意情報取得
- レジストリからの任意情報取得
- DBからの任意情報取得(接続方法は任意に選択可能)
- コマンドの実行結果から任意情報取得(systeminfo/ipconfig/netstat等)
んで、上記5種類の設定を各々10個位まで設定できて、テキストの設定ファイルとして保存/読み出し可能であればよい。さらに結果はテキスト出力出来ればいい。
バッチでも同様なことは可能なんだが、Windowsのシェルはたいしたことができない*1。vbscriptならそれなりのことが出来そうだが、vbscriptはリファレンスとデバッグ環境が弱い。実現したいことをすっきり記載することが難しい。
バッチにしない最大の理由はいちいち個別の設定をバッチ内部に記載なんてしていられないことだ。また、xmlファイルからデータを取得するのもbatでは難しい。
ここまで書いて気がついたが、xmlファイルからの情報取得手段さえ用意すれば、バッチファイル作成のアプリを作って、それでバッチファイルを編集すれば良いんじゃないだろうか。この方法であれば、excelマクロでも作成可能なので、いきなりハードルが下がる*2。というわけで今度作ってみよう。
尚、以下にバッチによるいろんな設定の抜き方をサンプルとして記載する。
hostsファイルからPCNAME01というPCのIPアドレスを取得するサンプル
set PC=PCNAME01 set OUTFILE=result.txt find /i "%PC%" %windir%\system32\drivers\etc\hosts >>%OUTFILE%
サービスの起動条件を取得するサンプル
sc qc "MSSQLSERVER" | findstr START_TYPE >>%OUTFILE%
レジストリから任意の値を取得するサンプル
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths" /s >>%OUTFILE%
SQLSERVERから任意のSQL文の結果を取得するサンプル
set DB=(DB名を記載) set TBL=(テーブル名を記載) set FLD=(フィールドを記載) set WHR=where (条件を記載) osql -E -s"," -Q"select %FLD% from %DB%..%TBL% %WHR%" -w2048 >%OUTFILE%