帰りは気楽な歌で

Windows、VBScript等の小ネタ、その他個人の趣味(音楽等)を書いていきます。

Windowsコマンドでプログラムの標準出力を読む

これまたlinuxのシェルを触っていて便利だなと思ったのが、プログラムの標準出力を変数に格納したりして、処理分岐に使える、という事。

VAR=`date +%Y%m%d`
echo ${VAR}
[結果]
20140724

で、windowsコマンドの場合はこれをforコマンドでやることになる。 下記の場合は、JP1(ver9)のajsshowコマンドを使い、第一引数で指定したジョブネットがどんな状態かをチェックするバッチだ。

プログラムの標準出力をBSTATUSという変数に渡して、findstrで"正常終了"か"異常検出終了"か"警告検出終了"を見つけたら、戻り値は 0 になる。

[test.bat]
for /F %%w in ('ajsshow -f "%%C" -X no %1') do set BSTATUS=%%w
echo %BSTATUS% | findstr "正常終了 異常検出終了 警告検出終了"
[使用例]
C:\>test.bat /テストジョブネット/テスト01/
C:\>echo %ERRORLEVEL%
0

ちなみに上記の例は、「ジョブネットが正常でも異状でも、終わった事を検知したい」という事情があって作ったもの。ジョブネットコネクタでは、接続元が異常終了すると、それ以上進めないので、やむなくこういうのを作りますた・・・

本ブログに記載のソースコード・情報を利用した際に生じたいかなる損害において、筆者は責任を負いません。十分な知識を持ったうえでご利用ください。