• ベストアンサー

バッチコマンドの「set」で入力した内容をファイルに出力する場合の問題点

DOSのバッチコマンドで以下のようなものを作りました。 set /p abc= echo %abc% > nyuryoku.txt 画面から入力した文字を「nyuryoku.txt」に出力することを意図したものですが、2つ問題が出ています。 (1)何も入力しないと、「nyuryoku.txt」に「ECHO は <ON> です。」と出力されてしまいます。 これは「」(つまりNULL値)を出力できないでしょうか。 (2)「123」を入力すると「nyuryoku.txt」に「123 」と出力されてしまします。つまり最後に半角スペースがついてしまいます。 これは「123」を出力できないでしょうか。 すみません。おわかりになる方がいたら教えてください。

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

  • ベストアンサー
  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.7

たしかに数字一文字では正常に出力されませんね。 どうやら遅延環境変数の展開で解決できそうです。 修正版を書きます。 setlocal enabledelayedexpansion set abc=. set /p abc= if %abc%==. goto e echo !abc!>test.txt :e end local これでどうでしょうか? お試し下さい。

touha
質問者

お礼

ご回答大変ありがとうございました。 できるようになりました。

その他の回答 (6)

  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.6

No.5 magician_1さんのそのままではうまく動かなそうです。 これでどうでしょうか? set abc=. set /p abc= if %abc%==. goto e echo %abc%>test.txt :e この場合、"." (ドット)一文字だけの入力は禁止として運用します。

touha
質問者

お礼

ご回答ありがとうございました。 ただ、他の方にも補足しましたが、「1」だけ入れるとうまく出力しないようです。「123」だときちんと出力されます。 ムムム わからなくなってきました。

回答No.5

これで、何も入力しないときは何も出力できないように出来ます。 set /p abc= if %abc%=="" e echo %abc%>test.txt :e

touha
質問者

お礼

ご回答ありがとうございました。 想定通りの運用ができそうです。 ありがとうございました。

noname#99913
noname#99913
回答No.4

 No.1です。  すみません。上記回答は質問の趣旨と違いましたね。ごめんなさい。

touha
質問者

お礼

>すみません。上記回答は質問の趣旨と違いましたね。ごめんなさい。 いえいえ、ご検討いただきありがとうございますm(_._)m ECHOを使わない方法もありですかね。 要はテキストファイルに出力したいだけなので。。。 もし何かわかりましたら教えてください。

noname#99913
noname#99913
回答No.3

 No.1です。  ひょっとして途中で改行していませんか。つまりechoのみの行があるのではないでしょうか。その場合 echo\ とすれば何も表示されずに改行されます。

touha
質問者

お礼

ご回答ありがとうございました。

  • Yorisin
  • ベストアンサー率54% (364/663)
回答No.2

(2)については、 リダイレクト部分の半角スペースを消せば直ると思います。 echo %abc%>nyuryoku.txt でどうでしょうか。

touha
質問者

お礼

おっしゃるとおりに修正してみたら、半角スペースがとれました。 ありがとうございました! (2)は解決しました!!! あとは(1)だけです。これって結構難問なんでしょうか???

touha
質問者

補足

お礼をした後に補足させていただきます。 いろいろ動かして気づいたのですが、「1」だけ入れるとうまく出力しないようです。「123」だときちんと出力されます。桁数の問題でしょうか。 ムムム わからなくなってきました。

noname#99913
noname#99913
回答No.1

(1)については「echo off」で対応できると思います。この「echo off」自身の表示も出したくなければ、「@echo off」とします。 すみませんが(2)についてはわかりません。

touha
質問者

お礼

ご回答ありがとうございました。 ただ、修正してみたのですが、今度は 「ECHO は <OFF> です。」 が出てしまいました。 ECHOで実施するとそうなってしまうということなのでしょうかね。 難しいです。。。

関連するQ&A

専門家に質問してみよう