- ベストアンサー
コマンドプロンプト(2000)で入力値によって処理を変えたい
コマンドプロンプト(bat)プログラムの途中で ユーザからの入力を促して入力された値を 変数としてセットし、その値をif文などで 評価することにより分岐させて入力された値によって 様々な処理を行わすことは可能でしょうか。 シェルスクリプトであればreadコマンドのような ものに変わるコマンドを期待しています。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Windows2000のプロンプトであれば、SETコマンドに/Pというオプションをつけて、同じ事が可能です。 詳しくはSET /? とやれば詳細なヘルプが出てきますが、例えば SET /P HOGE=何か入力しろ=> というコマンドが実行されると 何か入力しろ=> と表示され、入力待ちになります。 その後入力された内容は、変数HOGEに格納されます。 以上
その他の回答 (3)
>シェルスクリプトでいうsleepコマンドに変わるコマンド これは、標準ではなかったと思います。ただ、Resource Kit にはありますけど、必ず入ってるわけではないので困りますよね。 >何か勉強するのに(初心者用に)いいページなどありましたら教えていただけると幸いです。 マイクロソフトが提供してます。初心者からかなりの応用まで見つかって便利。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/scriptinga.asp 日本語版のサイトも見つかりましたが、英語サイトに比べて情報が足りない気がします。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vtoriMicrosoftWindowsScriptTechnologies.asp いずれにしろ、こちらからマニュアルがダウンロードできますから、それ読めば30分もすれば簡単なスクリプトなら書けるようになりますよ。
お礼
ありがとうございます! 勉強します!(まずは日本語サイトからですね(苦笑))
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>とくに厳密に何秒待つというわけではなく、 >CPUを100%にさせずに条件が整うまでloopを回したいだけです。 人間の準備待ちということなら PAUSE コマンドで待ちます sleepさせる標準コマンドは無いと思いますが VBScriptを使えば sleep.vbs: dim args Set args = WSCript.Arguments if args.Count < 1 then WScript.Sleep(10000) '数値はミリ秒、引数が無いとき10秒待つ else WScript.Sleep(args.item(0)*1000) end if の様に指定した秒数待たせることができます。 バッチの中から上記を使うには CScript /nologo sleep.vbs 3 (3秒待つ)の様に使えます。
お礼
早速の回答ありがとうございます。 VBscriptですか... Windows標準で使えるのであれば覚えておいて損は無いですね。(コマンドプロンプトだけでは限界がありますね) 何か勉強するのに(初心者用に)いいページなどありましたら教えていただけると幸いです。 助かりました。ありがとうございます。
- chie65536
- ベストアンサー率41% (2512/6032)
choice.exeと言うのがあります。 http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/ja-jp/Default.asp?url=/resources/documentation/WindowsServ/2003/standard/proddocs/ja-jp/choice.asp パソコンにchoice.exeが入って無い場合、同等のソフトが同じ名前でフリーウェアとして公開されているので探して見て下さい。 batファイルの中で使う場合は :loop choice /c ync /n /m Yes or No or Cancel? if errorlevel 1 goto Yes if errorlevel 2 goto No if errorlevel 3 goto Cancel goto loop :Yes YESの処理 goto next :No NOの処理 goto next :Cancel キャンセル処理 :next 続きの処理 のようにします。
お礼
詳しい例まで書いていただいてありがとうございます。 こちらが記述していなかったので申し訳ないのですが フリーウェアは都合により使えないので今回は見送らせていただきたいと思います。お手数おかけしました。
お礼
setは環境変数を見るだけのコマンドだと思っていました... ありがとうございます。助かりました。 あと、追加で聞いて申し訳ないのですが、 シェルスクリプトでいうsleepコマンドに変わるコマンド についても(Windows標準のコマンドで)ご存知でしたら教えていただけると助かります。 とくに厳密に何秒待つというわけではなく、 CPUを100%にさせずに条件が整うまでloopを回したいだけです。 宜しくお願いいたします。