• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DOSコマンドでの値の範囲チェック方法)

DOSコマンドでの値の範囲チェック方法

このQ&Aのポイント
  • DOSコマンドでの値の範囲チェック方法を教えてください。
  • 画面からの入力を受け、使用できる値(0〜9、A〜F)かどうかをチェックし、再入力を促す方法について教えてください。
  • エレガントかつ効率的なDOSコマンドでの値の範囲チェック方法を教えてください。

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

  • ベストアンサー
  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.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 ------------------------------------------------------------

mibusys
質問者

お礼

おおー。いろいろすばらしいです。 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でもあまり信用できない ・ヘルプはきちんと最後まで見るべき という教訓にもなりました。 大変参考になりました。 ありがとうございました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

for でテスト対象を変えるってのはどう? 例えば for %%X in (0 1 ... F) do if "%INPUT_BG% == "%%X" goto どこか echo 0~9,A~Fの一文字で入力してください GOTO :BG が動けば簡単だね.

mibusys
質問者

お礼

教えていただいた方法でやりたいことが実現できました! ありがとうございました。 このような方法をご教授いただいたということは 普通の言語のように範囲指定やAND条件を使用することは 出来ないということなのですよね… ちょっと不便さを感じますがそういうものなのですよね。 回避方法が分かったこと、 DOSコマンドのIF文は融通が利かないこと、 等が分かり参考になりました。 ありがとうございました。

関連するQ&A