お勉強 :  内部コマンドのナゾ 

インターネットに接続していないWindowsXP(お遊び用)でPHPで
スクリプトを書いたり、PHPからバッチファイルを呼び出したりして
遊んでいたわけですが、PHPの exec コマンドでバッチファイルの
出力を取得したい!となりました。

単にバッチファイル内でエラーレベル %ERRORLEVEL% を
返せばいいのかと思ったがうまくゆかず。

PHPの exec コマンドには第二引数で配列を指定できて、
ここにコマンド実行結果を1行ずつ配列要素として追加して
くれる機能があるので、バッチファイル内で echo を使って
エラーレベルを表示しておけばいい、と考えた。

ところが、こんな感じで書くとエラーレベルがどんな状況でも
ゼロになってしまった・・・
-------------------------------
目的のコマンド
cd ..
echo %ERRORLEVEL%
exit /b
-------------------------------

なんで?なんで?とネットを調べたりいろいろ悩んだりした
結果、こうすれば思ったようにエラーレベルを得られる事に
気付いた。
-------------------------------
目的のコマンド
echo %ERRORLEVEL%
cd ..
exit /b
-------------------------------

コマンドヘルプを見ても cd コマンドがエラーレベルを返す
とは書かれていなかったけど、手打ちで試してみると
ディレクトリ移動に成功すると 0、失敗すると 1 を返して
くれていた。

むかーしのMS-DOSの名残なんだろうか?
バッチファイルは単純だ!と思い込んでいたけど、
変なところでひっかかることが多いなぁと実感したのでした。

さて、今晩の体重は 76.7kg でした。

[ 2015/07/03 22:31 ] お勉強 | TB(0) | CM(0)
コメントの投稿








管理者にだけ表示を許可する