• ベストアンサー

NT4.0にてCHOICEコマンドに変わるもの

NT4.0にてCHOICEコマンドに変わるコマンドを探しています。当方はXP(pro)とNT4.0で動作するBATファイルを作ろうとおもったのですが、外部コマンドの為CHOICEコマンドが動作しません。代換になるコマンドがありましたら教えてください。会社のパソコンで実行するので無料のツールなどはなるべく使わない方向でお願いします。

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

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

フリーソフトでよければ、VectorにNT系用Choiceがあります(下記URL)。 #2さんが、set /P を使ったものを書いてらっしゃいますが、set /P の機能はWin2000以降なので、NT4では使えません。フリーソフトを使わず、NT4とXPで共通のスクリプトにするなら、VBSを使うしかないですね。例えば、 echo WScript.Stderr.Write "Enter(Y/N):">tmp.vbs echo WScript.Echo WScript.Stdin.ReadLine>>tmp.vbs :ReEnter set ANS= for /f %%A in ('cscript //nologo tmp.vbs') do set ANS=%%A if /i "%ANS%"=="Y" goto YES if /i "%ANS%"=="N" goto NO echo Input Error goto ReEnter :YES Yの時の処理 ..... :NO Nの時の処理 .....

参考URL:
http://www.vector.co.jp/soft/win95/util/se349380.html
nabepapa
質問者

お礼

なかなか難しい感じですね。VBSとはウィンドウズに標準で組み込まれているのでしょうか?

その他の回答 (5)

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

>なかなか難しい感じですね。 for /f は(' ') 内のコマンドを実行してその出力結果を変数にセットします。他の部分は読んで字の如し。 >VBSとはウィンドウズに標準で組み込まれているのでしょうか? Win98,Win2000以降は標準で入ってます。NT4の場合はIE5かIE6を入れていれば入ってるはずです。 というか、やってみればわかると思いますが。

  • mssine
  • ベストアンサー率24% (38/156)
回答No.4

#3です。 これはC++言語のソースですので、これをchoice.cppの名前で格納し、コンパイル&リンクすれば choice.exeが出来ます。 で、バッチファイルの中などで、 choice "番号を選択してください" set rtn = %errorlevel% という使い方をします。

nabepapa
質問者

お礼

コンパイル&リンク、?すいません素人なもんで、もう少し勉強して見ます。

  • mssine
  • ベストアンサー率24% (38/156)
回答No.3

私も同じ問題に直面し、代替プログラムを書いて対処しました。 #include <iostream.h> #include <stdlib.h> int main(int argc, char *argv[]) { char ret[128]; if (argc < 2) return(0); cout << argv[1] << " >"; cin >> ret; return(atol(ret)); }

nabepapa
質問者

お礼

ご返事、ありがとうございます。 この書式は、DOS窓でうごくのでしょうか? 私にはちょっと難しいかもしれません。

  • goomania
  • ベストアンサー率56% (84/149)
回答No.2

考え方として2通りあるようです。 1.CHOICEコマンドにかわるコマンドを自分で作ってしまう。 2.CHOICEコマンドとほぼ同等の動きをする他のコマンドに代替する。 最も簡単な例として以下のURLは参考になりませんか? http://www.fmworld.net/biz/primergy/support/troubleshooting/primergy_w2k/002-0123-0951.html また、1.の方法は以下のURLで http://www1.plala.or.jp/tsune/3choice.html また、2の方法として以下のようなバッチファイルは視覚的もCHOICEコマンドに近いと思います。 @ECHO OFF setlocal enabledelayedexpansion :CHOICE SET CHOICE= ECHO 処理を続行しますか? SET/P CHOICE="[Y] [N]を入力して下さい。[%CHOICE%]:" IF /i !CHOICE! == N GOTO END IF /i !CHOICE! == Y GOTO START GOTO CHOICE :END ECHO 処理省略 PAUSE EXIT :START ECHO 通常処理開始 PAUSE ECHO 正常処理

参考URL:
http://www1.plala.or.jp/tsune/3choice.html
nabepapa
質問者

お礼

ご返事、ありがとうございます。 [%CHOICE%]:"にYやNOや数字、文字列をSETして IF /i !CHOICE! == N GOTO ENDで選択という形をとればいいのですね? この文面を繰り返せば、いくつでも選択が可能と判断してよろしいのでしょうか? 又、 setlocal enabledelayedexpansion :CHOICE は何をやっているのでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

CHOICEコマンドってどんな動作するんでしたっけ? NT4とXPで同じコードを動かそうとするなら VBScriptを使うのも1つの方法だと思います。

関連するQ&A