• 締切済み

NTのバッチを会話形式にしたい

WindowsNT4.0(SP6)で、バッチファイルを作ろうと思っています。 会話形式で標準入力からの入力待ちで処理を止めたいのですが、どうしたらいいのでしょうか? Solarisなら下のような感じなのですが、Windowsではどうやったらいいのかわかりません。 どうか教えてください。 Solaris(csh)の場合・・・ #!/bin/csh echo -n "年齢入力" set innum=$< # if ($innum < 19)then echo "あなたは成人ではありません" else echo "あなたは成人です" endif exit

みんなの回答

noname#41381
noname#41381
回答No.2

標準コマンドでは無理なのかな? 自分の場合、昔はDOS6の「choice」を使ってましたが(1文字判断のみ)、今はperlに逃げて(?)います。 ということで、quenistaさんが言われている通りフリーのツールを使うのがいいのでは? 参考URLのnumkeyなんてどうですか?(MS-DOSですが...) ちなみに、入力結果(実行結果)の判断は「IF %ERRORLEVEL%」で行いますが、 「IF %ERRORLEVEL% EQU ・・・」といったように比較演算子は、次のようになります。 EQU - 等しい NEQ - 等しくない LSS - より小さい LEQ - 以下 GTR - より大きい GEQ - 以上

参考URL:
http://www.vector.co.jp/vpack/filearea/dos/util/bat/index.html
kayu24
質問者

お礼

ご回答頂きましてありがとうございます。 できればツールを使わずに作りたかったのですが、URL参考にさせていただきます。

  • quenista
  • ベストアンサー率28% (122/425)
回答No.1

待つだけならPAUSEを使えば、それらしくなると思いますが、 Key入力に対して動作を変える場合は、簡単なToolが必要かと思います。 (本当に、簡単に作れますが...。)

kayu24
質問者

お礼

ご回答頂きましてありがとうございます。 できればツールを使わずにやりたかったのですが、無理そうですね(^^; どうもありがとうございました。

関連するQ&A

  • if文について

    cshで書いています。 if文がとおりません。。。 0: Event not found. このようなメッセージが出力されます。 if ($flg == "xxx") then echo "aaa" else if($flg == "yyy") then echo "bbb" exit else echo "ccc" exit endif 内容は上記のような感じです。 どなたか教えて下さい。

  • cshの条件式について教えてください

    cshで該当ディレクトリにファイルがなければOK、あればエラーというような処理をしようと思っています。 しかし、下記のような記述ではうまくできません。 1) *************************** if ( -e $DIR/*.* ) then echo "NG" exit 1 else echo "OK" endif exit 0 *************************** if文でなく、外にだせばうまくいくのですが... 2) *************************** test -e $DIR/*.* if($status == 0) then echo "NG" exit 1 else echo "OK" endif exit 0 **************************** if ( test -e $DIR/*.* ) then... でもだめでした。 どうにかしてif文で一発判定をしたいと思っているのですが、正しい記述方法を教えてください。 よろしくお願いします。

  • UNIX Cシェルで実数の比較

    UNIX Cシェルで実数の比較がしたいのですが、 うまくいきません 以下のような結果になります。 うまく判定するにはどうすればよいのでしょう #!/bin/csh -f set CONSIZE=-0.01 echo "CONSIZE = $CONSIZE" @ CONSIZE = $CONSIZE if( $CONSIZE < 0.0 )then echo " 0以下;;; $CONSIZE" exit endif 実行 CONSIZE = -0.01 @: 数値形式が正しくありません。

  • UNIXでテキスト→PS→印刷なコマンド

    UNIXを勉強中です。 テキストファイルをPSファイルにして、すぐに印刷してくれるようなUNIXスクリプトを書いたつもりなのですが、どうもうまく行きません。 どこが間違っているのでしょう。 ちなみにプリンタはlp4160です。 #!/bin/csh -f if($#argv != 1)then echo "テキストファイルをPSファイルにして印刷します。" echo "ファイル名を指定します。" exit 1 endif a2ps -f9.8 $1 | lpr -Plp4160

  • シェルプログラムの判定について

    皆さんのお知恵をお貸しください シェルはcshです 目的set name = $<で$nameに入る文字が+-*/(一文字毎です)の時エラー処理をしたい 現状下記のプログラムですが判定出来ません set xx = $< set moji = `grep -c '[\-\+\*\/]' xx` if ( $moji == 1 ) then echo 文字に誤りがあります endif  else if ( $moji == 0 ) then echo OKです endif +-*/が入った時にエラーを出したいのですが+-*/をどう判定したらよいのか教えて頂けます様お願い致します。

  • セルのIF分の質問です

    セルに入れる IF分を 教えてください NGを 分解してみたのですが・・・・ =IF(N3=1,then     -M2, else     IF(K2=1, then       IF(M2<P3-M3, then          M2      Else         P3-M3,       endif      else          IF(K2=-1,then           IF(M2<M3-P3,then               M2,           Else               M3-P3,            endif         else            0         endif)       endif) endif) N3 は 1 もしくは 0。 K2 は 1,-1,0 の3通りです IF が 5個ですから ) も 5個?(ENDIF も 5個 だし?) といった ことで お手数ですが

  • getoptsの使い方を教えてください

    sh組み込みのgetoptsではなく、/bin/getoptsをcshスクリプトの中で使用してみようと試みmanを読んでみたのですが上手く動作せず、getoptsの使用方法を教えて頂きたく思っています。 例として、optionを -a -b <file> のようにaと引数を取る-bを使用することが出来るような場合に関して具体的にスクリプトはどのようになるのでしょうか? イメージとしてはcshで以下のようなものになるかと思われます: #! /bin/csh -f set noglob set mode_a = "" set mode_b = "" set mode_b_file = "" while ($#argv) switch ($1) case -a : set mode_a = 1 breaksw case -b : set mode_b = 1 if($#argv >= 2) then shift set mode_b_file = $1 else echo "[Error]: -b is followed by <file_name>" exit 1 endif breaksw default: echo "[Warning]: ignored option $1" endsw shift end echo "option a is $mode_a b is $mode_b b_file is $mode_b_file" exit 0 以上宜しくお願いします。

  • UNIX

    UNIXの課題をやっていて、ここまで出来たのですが???の部分が 分かりません;誰か教えて頂けると助かります; 時間があれば説明も加えて頂けたら幸いです; #!/bin/bash #ふたつの引数の大小を判断し表示するシェルスクリプト if [ $# -lt 2 ] then echo "引数が足りません" exit fi cmp1=$1 cmp2=$2 if [ $cmp1 -gt $cmp2 ] then echo "$cmp1 ??? $cmp2" elif [ $cmp1 ??? $cmp2 ] then echo "$cmp1 = $cmp2" else echo "$cmp1 ??? $cmp2" fi

  • Linuxのシェルについて

    いつもお世話になっております。 Linux(redhat)でのシェルスクリプトを作成したいと思いますが、あるコマンドを実行して実行成功したか失敗したかをstatusで拾う形にしたのですがうまくいきません。アドバイスをお願いします。 例: #!/bin/sh set ST = $status date ←コマンド if [ $ST == 0 ]; then echo "**************" echo "* o k *" echo "**************" exit $NORMAL else echo "**************" echo "* N G  *" echo "**************" exit $ABEND fi

  • system関数で呼びだした、cshファイル周辺でのエラー

    2~3日前にも質問させていただいた、Perl初心者leeeeeeeeです。先日に引き続き、前の業者が作ったPerlプログラムを、新しいサーバ上で動くようにする作業を行っているのですが、まだエラーが出ており困っています。以下が問題の部分です。 ○○.cgi # 削除シェルの実行 $rtn = system"$rm_csh $tmp_file $limit_date $touch_file"; if($rtn != 0) {  # エラーログ出力  cm_errlog(__FILE__, "LOG013", ($rm_csh." ".$limit_date));  # エラーHTML出力  省略  # 異常終了  exit 1; } ここの、$rtnが、0になっていないようで、エラーページが表示されてしまいます。 ちなみに、$rm_csh は、tmpdel.cshというファイルで、以下が中身です。 ■ tmpdel.csh #!/usr/bin/csh set touch_fname = $3 set tmp_file = $1 touch -t $2 $touch_fname >& /dev/null set STS = $status if( $STS != 0) then exit 1 endif foreach file_name (`ls $tmp_file*`)  test $file_name -ot $touch_fname && rm $file_name >& /dev/null end exit 0 ■ tmpdel.csh の #!/usr/bin/csh という部分が気になって、#!/usr/bin/perlとか、 #!/bin/cshにもしてみましたが動きませんでした。 何が原因でエラーが出ているのかが分かりません。 宜しくお願いします。