• 締切済み

BATにおいての10進数入力の判定方法について

BATにおいて、以下の処理を行わせたいと考えております。 どのようなロジックを組めばよいかご教示頂けますでしょうか。 <要件> (1) set /p NUM="10進数で数字を入力してください >"を表示し、10進数で3600000などの数字を入れた場合のみ別の変数に10進数で入力した数字をセットする。 (2) 8進数、16進数、文字を入れた場合は、「echo 10進数で入力してください」を表示する。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

めんどくさいです。 set /p NUM="10進数で数字を入力してください >" rem 空だとエラー if "%NUM%"=="" goto ERR set W=%NUM:0=% set W=%W:1=% set W=%W:2=% set W=%W:3=% (中略) set W=%W:9=% rem 0から9の数字を全部削除した物が空でないと数字以外の物があったと言うことでエラー if not "%W%"=="" goto ERR rem 0でないが0で始まる物は8進数なのでエラー if not "%NUM%"=="0" if "%NUM:~0,1%"=="0" goto ERR 10進数の時の処理 goto :EOF :ERR echo 10進数で入力してください

  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

(2) の8進数に用いる0~7と、10進数に用いる0~9の区別がつかないので、実装不可能です。 (1) は、入力を促すプロンプトを出して、そこで入力された「文字列」が 変数NUM に保存され、それから10進数で用いられる0~9のみであるかの検証に入り、「数値」化されたものを 別の変数 に代入する、という意味でしょうか。

noname#242248
質問者

補足

ありがとうございます。 以下のサイトを見るとSET /A num=0x12、SET /A num=022の記載があります。 入力した値にの先頭に0xが付いていれば16進数、先頭に0がついていれば8進数という判断を行えば、できるのではと考えております。先頭の文字が1~9であれば、10進数と判断をして別の変数にセットしたいと考えております。 set /a NUM=="10進数で数字を入力してください >"とできればいいのですが、set /p NUM="10進数で数字を入力してください >”にしないとプロンプトが表示されないので、set /pにしてあります。 set /pで指定した変数に入力された文字をSET /A numに渡せば、実現できるのではと考えておりますが、うまくプログラムへの記述方法がわからなく、困っております。 ---------------------------------------------------------------------- Windowsコマンドプロンプト基礎文法最速マスター https://windows.g.hatena.ne.jp/cx20/20100203/p1 ----------------------------------------------------------------------

関連するQ&A