• ベストアンサー

MS-DOSの起動ディスクでループする?

どうにもいきづまってしまいましたのでお力を貸して下さい。 WindowsXPからMS-DOSの起動ディスクをフロッピーディスクで作成してAUTOEXEC.BATに下のように書いたのですがメニューから入力するところで止まらずうまくいきません。 Windowsのコマンドプロンプト上ではうまくいくのですが、調べてみたらコマンドプロンプトとMS-DOSが別ものということはわかったのですがどのように直していいかわかりません。 すみませんがご教授いただけないでしょうかよろしくお願いします。 環境 OS:Windows XP Pro PC:NEC VersaPro :Main cls @echo off rem メニュー echo キー入力後、エンターで決定して下さい echo [0] 処理 echo [E] 終了 rem 入力値の取得 set /p input= if defined input set input=%input:"=% rem 入力値判断 if /i "%input%" == "0" (goto KAKUNIN) if /i "%input%" == "E" (goto exit) else goto Main goto main :KAKUNIN cls echo 処理をしていいですか? Y/N set /p input= if defined input set input=%input:"=% if /i "%input%" == "Y" (goto SYORI) if /i "%input%" == "N" (goto Main) else goto KAKUNIN :SYORI 処理をする pause :exit

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

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

MS-DOSには、SET /P の機能がありません。従って、文字列を入力することはできません。 あと、IF の /I や ELSE や DEFINED の機能もありません。 MS-DOSでキー入力判断が必要な場合は、 http://www.vector.co.jp/soft/dos/util/se023753.html のようなツールを使います。 テストしてませんが、こんな感じかな? :Main cls @echo off rem メニュー echo キーを入力してください echo [0] 処理 echo [E] 終了 rem 入力値の取得 bu keylist 0E rem 入力値判断 if errorlevel 2 goto exit cls bu keyyesno 処理をしていいですか? if errorlevel 1 goto Main 処理をする pause :exit

ik140_o
質問者

お礼

思ったよりも制限があるのですね。MS-DOSになるとなにから調べていいのかわからなくて本当に困っていたので助かりました。 例まで記載していただいておかげさまでうまくいきました本当にありがとうございました。

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 あ~懐かしいねぇ。MS-DOS 3.30(NEC版)あたりを使っていた頃はみんなこぞってテキストベースのメニューを作ってたもんだ。  で、MS-DOSの場合SET /Pが無い。なのでここを別のコマンドで代用してやる必要があるのじゃが・・・・、昔のMS-DOSにはこれを行うためのchoiceというコマンドがあった(choice.comかchoice.exeかは分からない)のだが、今ネットでざっと見てみるとWindows Meにもあるみたいやね。Windows 95、98、Meあたりが入手できるのであればchoiceコマンドも手に入るやも知れぬ。  で、choiceコマンドが入手できたら、後はそいつを使って結果はERRORLEVELを見るようにすればOK。choice.comはMS-DOS向けのコンパイラがあるのなら自作するのもそんなに手間な話ではないので作ってみても良いでしょう。LSI C-86 v3.30c 試食版でも作れるでよ。  それか・・・・ライセンス的にどうなのか分からないけど、http://bootdisk.comあたりをうろちょろしてみたり・・・・。

ik140_o
質問者

お礼

MS-DOSは奥が深いんですね。現在の便利な環境に慣れていると苦労します。 choiceについても調べてみます。ありがとうございました。

関連するQ&A