• ベストアンサー

DOSバッチでのファイル出力

別ファイルで定義した変数内の文字列をファイル 出力したいと思っています。 REM 環境変数の設定 ※別ファイル内変数の読み込み CALL ../../ENV.BAT ・ ・ :SQLERROR echo %ERROR% >> aaa.log ---------------------------- 作成された「aaa.log」を見ると、「ECHO は <ON> です。」のような メッセージが表示され変数「%ERROR%」内の文字列がありません。 変数「%ERROR%」を固定文字列にすると出力されます。 変数内文字列の出力はどうすれば良いですか?。アドバイス お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

変数内の文字列の出力方法はそれでいいです。 ENV.BAT の中で確かに ERROR に値をセットしているのに、echo で出力されないとしたら、どこかにタイプミスなどの間違いがあるので、@echo off を削除して、画面でコマンドの実行される様子を見て、確かに ERROR にセットされているか確認してください。 そうじゃなくて、ERROR が空白かもしれないときに、echo を正しく機能させるには、 echo/%ERROR% >>aaa.log のようにechoの次を空白でなく、何か記号を書きます。その記号自体は出力されません。

noname#17137
質問者

お礼

みなさま有難うございました。 原因がわかりまして・・ SET aaa = bbbbb と文字間にスペースがあったことが 原因のようです。 とんだケアレスミスで失礼しました。 現在は問題なく動作しております。 有難うございました!。

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

「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 とかに変更するしかありません。但し、ログにも「""」とか「[]」とかって行が出力されてしまいます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

呼ぶバッチと呼ばれるバッチを用意します。 呼ばれるバッチでは %ERROR% の部分を %1 と変更しておいてください。 呼ぶバッチで %ERROR% を取得させます。 結果として 【呼ぶバッチ】 call <呼ばれるバッチ> %ERROR% ※それぞれ半角スペースでセパレートすること 【呼ばれるバッチ】 echo %1 >> aaa.log

関連するQ&A