- ベストアンサー
DOSコマンドでの値の範囲チェック方法
- DOSコマンドでの値の範囲チェック方法を教えてください。
- 画面からの入力を受け、使用できる値(0〜9、A〜F)かどうかをチェックし、再入力を促す方法について教えてください。
- エレガントかつ効率的なDOSコマンドでの値の範囲チェック方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エレガントかどうかはわかりませんが、下記のような書き方も出来ます。 ※インデントのため、全角スペースを入れています。 コマンドプロンプトで SET /? IF /? などとすると幸せになれるかもしれません。 ------------------------------------------------------------ @echo off :BG SET /P INPUT_BG=値を入力してください: rem 1文字取り出す SET A=%INPUT_BG:~0,1% rem 取り出した文字と入力文字が同一なら入力文字数は1文字 IF %A%'==%INPUT_BG%' ( rem 0~9を許容 IF %A% GEQ 0 ( IF %A% LEQ 9 ( GOTO NEXT ) ) rem A~Fを許容 IF %A% GEQ A ( IF %A% LEQ F ( GOTO NEXT ) ) ) ECHO 0~9,A~Fの一文字で入力してください GOTO BG :NEXT echo %INPUT_BG% pause ------------------------------------------------------------
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
for でテスト対象を変えるってのはどう? 例えば for %%X in (0 1 ... F) do if "%INPUT_BG% == "%%X" goto どこか echo 0~9,A~Fの一文字で入力してください GOTO :BG が動けば簡単だね.
お礼
教えていただいた方法でやりたいことが実現できました! ありがとうございました。 このような方法をご教授いただいたということは 普通の言語のように範囲指定やAND条件を使用することは 出来ないということなのですよね… ちょっと不便さを感じますがそういうものなのですよね。 回避方法が分かったこと、 DOSコマンドのIF文は融通が利かないこと、 等が分かり参考になりました。 ありがとうございました。
お礼
おおー。いろいろすばらしいです。 DOSでのIF文はこう書くべきという事がだいぶ理解できた気がします。 いくつか参考にしたサイトでは、 GEQ等の記述はありませんでした。 if - Windowsコマンド集:ITpro http://itpro.nikkeibp.co.jp/article/Windows/20051006/222338/?ST=system DOSコマンド一覧 http://hisa-net.ddo.jp/php/dos/dos_command.php#if またその上で、「IF /?」でヘルプを見ていてはいるのですが 最初の一画面をみてやはり以下の3種しか出てこないことを確認し、 やっぱりそうなのかと判断してしまいました。 IF [NOT] ERRORLEVEL 番号 コマンド IF [NOT] 文字列1==文字列2 コマンド IF [NOT] EXIST ファイル名 コマンド (改めてやってみたら次の画面に記述されていることも確認しました) ・ITproでもあまり信用できない ・ヘルプはきちんと最後まで見るべき という教訓にもなりました。 大変参考になりました。 ありがとうございました。