dポイントプレゼントキャンペーン実施中!

DOSのバッチコマンドで以下のようなものを作りました。

set /p abc=
echo %abc% > nyuryoku.txt

画面から入力した文字を「nyuryoku.txt」に出力することを意図したものですが、2つ問題が出ています。

(1)何も入力しないと、「nyuryoku.txt」に「ECHO は <ON> です。」と出力されてしまいます。
これは「」(つまりNULL値)を出力できないでしょうか。

(2)「123」を入力すると「nyuryoku.txt」に「123 」と出力されてしまします。つまり最後に半角スペースがついてしまいます。
これは「123」を出力できないでしょうか。

すみません。おわかりになる方がいたら教えてください。

A 回答 (7件)

たしかに数字一文字では正常に出力されませんね。



どうやら遅延環境変数の展開で解決できそうです。
修正版を書きます。


setlocal enabledelayedexpansion

set abc=.
set /p abc=
if %abc%==. goto e
echo !abc!>test.txt
:e

end local


これでどうでしょうか?
お試し下さい。
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/12/02 08:46

No.5 magician_1さんのそのままではうまく動かなそうです。


これでどうでしょうか?


set abc=.
set /p abc=
if %abc%==. goto e
echo %abc%>test.txt
:e



この場合、"." (ドット)一文字だけの入力は禁止として運用します。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/12/01 09:17

これで、何も入力しないときは何も出力できないように出来ます。



set /p abc=
if %abc%=="" e
echo %abc%>test.txt
:e
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/12/01 09:01

 No.1です。


 すみません。上記回答は質問の趣旨と違いましたね。ごめんなさい。
    • good
    • 0
この回答へのお礼

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

いえいえ、ご検討いただきありがとうございますm(_._)m

ECHOを使わない方法もありですかね。
要はテキストファイルに出力したいだけなので。。。

もし何かわかりましたら教えてください。

お礼日時:2008/11/28 12:00

 No.1です。


 ひょっとして途中で改行していませんか。つまりechoのみの行があるのではないでしょうか。その場合
echo\
とすれば何も表示されずに改行されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/01 08:59

(2)については、


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

この回答への補足

お礼をした後に補足させていただきます。

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

補足日時:2008/12/01 09:18
    • good
    • 0
この回答へのお礼

おっしゃるとおりに修正してみたら、半角スペースがとれました。
ありがとうございました!
(2)は解決しました!!!

あとは(1)だけです。これって結構難問なんでしょうか???

お礼日時:2008/11/28 11:08

(1)については「echo off」で対応できると思います。

この「echo off」自身の表示も出したくなければ、「@echo off」とします。
すみませんが(2)についてはわかりません。
    • good
    • 0
この回答へのお礼

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

ただ、修正してみたのですが、今度は
「ECHO は <OFF> です。」
が出てしまいました。

ECHOで実施するとそうなってしまうということなのでしょうかね。
難しいです。。。

お礼日時:2008/11/28 11:06

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

このQ&Aを見た人はこんなQ&Aも見ています