プロが教えるわが家の防犯対策術!

別ファイルで定義した変数内の文字列をファイル
出力したいと思っています。

REM 環境変数の設定 ※別ファイル内変数の読み込み
CALL ../../ENV.BAT


:SQLERROR
echo %ERROR% >> aaa.log

----------------------------

作成された「aaa.log」を見ると、「ECHO は <ON> です。」のような
メッセージが表示され変数「%ERROR%」内の文字列がありません。

変数「%ERROR%」を固定文字列にすると出力されます。

変数内文字列の出力はどうすれば良いですか?。アドバイス
お願いします。

A 回答 (3件)

変数内の文字列の出力方法はそれでいいです。


ENV.BAT の中で確かに ERROR に値をセットしているのに、echo で出力されないとしたら、どこかにタイプミスなどの間違いがあるので、@echo off を削除して、画面でコマンドの実行される様子を見て、確かに ERROR にセットされているか確認してください。

そうじゃなくて、ERROR が空白かもしれないときに、echo を正しく機能させるには、
echo/%ERROR% >>aaa.log
のようにechoの次を空白でなく、何か記号を書きます。その記号自体は出力されません。
    • good
    • 0
この回答へのお礼

みなさま有難うございました。

原因がわかりまして・・

SET aaa = bbbbb

と文字間にスペースがあったことが
原因のようです。

とんだケアレスミスで失礼しました。
現在は問題なく動作しております。

有難うございました!。

お礼日時:2005/12/20 10:52

「ECHO は <ON> です。

」は正しい動作ですね。

変数ERRORが「空白文字」か「未定義」の場合
echo %ERROR% >> aaa.log
の行は
echo >> aaa.log
と解釈されます。

echoコマンドにパラメータを与えない場合、現在ONなのかOFFなのか表示するのがechoコマンドの正しい動作なので
echo >> aaa.log
を実行すると
>作成された「aaa.log」を見ると、「ECHO は <ON> です。」
となるのが当然です。

変数ERRORが「空文字」か「未定義」の時でもechoコマンドに引数が残るように
echo "%ERROR%" >> aaa.log
とか
echo [%ERROR%] >> aaa.log
とかに変更するしかありません。但し、ログにも「""」とか「[]」とかって行が出力されてしまいます。
    • good
    • 0

呼ぶバッチと呼ばれるバッチを用意します。



呼ばれるバッチでは %ERROR% の部分を %1 と変更しておいてください。
呼ぶバッチで %ERROR% を取得させます。


結果として
【呼ぶバッチ】
call <呼ばれるバッチ> %ERROR%
※それぞれ半角スペースでセパレートすること


【呼ばれるバッチ】
echo %1 >> aaa.log
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!