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