jscripterさん < こん??は でび です
On Mon, 24 Mar 2014 02:48:36 -0700 (PDT)
jscripter <
jscri...@gmail.com> wrote:
> 参考になりませんでしょうか。
set userkey=
set /p userkey=終了する (Enter) / メイン処理を再度実行 (o + Enter) / サブ処理を実行 (p + Enter) ?
if not '%userkey%'=='' set userkey=%userkey:~0,1%
if '%userkey%'=='o' goto start
if '%userkey%'=='p' goto exec
goto quit
:exec
:quit
>set userkey=%userkey:~0,1%
で1文字目を必ず切り出すように事前加工するのがミソなんですね。
こういう発想がすぐにできるのはすごいなぁ。
あれこれやったのですがset /p ではNEQなどの指定は同時に
使えないらしいことに気づくまで結構時間がかかりました。
それで、大文字小文字の別だけではなく、打鍵ミスで複数文字列
が入ってしまった場合、「その場合を全部」書き出すのは無理だし
なぁと、困っていたのです。
ドンピシャのご教示、ありがとうございます。
あと、{ } で括って else if goto quit みたいにしなくても、
基本的には下方向に直線的に流れて行くことを逆手にとって
(ラベルを置けばそれ以上は進まない)、選ばなかったことを
選んだ扱いにすればいいんですね。
「契約終了のX日前までに契約解除の申し入れがない場合、
当社サーバ契約の自動継続を申し入れたものと見なします。」
と同じなんですね。
世の中の仕組みはよくできています。
あと、このエントリー、「書き方・パターン集 」という
だけあって、ひな形として本当によくできていますね。
-------------
さきほど、choiceコマンドを見つけました。
choiceコマンドってYとNだけだと思っていたら、ほかの文字も指定できるんですね。
昔からそうだったかなぁ…。
choice /C 59aZ /N /M "[9,1,a,Z]から1文字を入力してください:"
こんな感じで、9を入力するとエラーレベルが1として返り、
Zだとエラーレベル4が返るようです。
choice /?の説明は、不親切な書き方で意味不明でしたが、/CSスイッチを
明示的に指定しない場合は、大文字小文字は同一視されるのを確認しました。
でび
http://davi.txt-nifty.com/1984/