質問: ### 前提・実現したいこと 初めて質問させていただきます。 文章が長くなりますが答えていただけると助かります。 私はプログラミングに関して全くの初心者です。 とあるJavascript関連の初心者向けの本を 参考にして、Javascriptで以下のプログラムを作りました。 --- let text=prompt('年齢は?'); if(!isNaN(text)){ let age=parseInt(text); if(age<20){ console.log('未成年'); if(age>=6&&age<=15){ console.log('(義務教育)'); } }else if(age<65){ console.log('成人'); }else{ console.log('高齢者'); } } --- 上記で作成したプログラムの仕様は以下の様に なります。 ・年齢を入力すると年齢層の判定を行います。 ・年齢に応じて「未成年」「成人」「高齢者」の 3つの年齢層を表示します。 ・「未成年」のうち、義務教育期間の時は、 「未成年」(義務教育)」と表示します。 これを作成した所、とある理由で、同じ機能を実装した、 Windowsのバッチファイル(.bat)も作ることになりました。 しかし2日間色々調べたのですが、作成方法が分からずに困っています。 ### 発生している問題・エラーメッセージ 試したこととして、 1デスクトップに「バッチファイル」という名のフォルダーを作成 2その中に、「cmd.exe」のショートカットと上記のプログラムを メモ帳で貼り付けファイル名を「hong.bat」に変更したファイルを 「バッチファイル」のフォルダーの中に貼り付けます。 3「cmd.exe」のショートカットをクリックし、「hong.bat」を 入力した所、以下のエラーメッセージの画面が出てきました。 (※○○○の箇所は、個人情報なので、匿名にて失礼致します) --- Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\○○○\Desktop\バッチファイル>hoge.bat C:\Users\○○○\Desktop\バッチファイル>let text=prompt('年齢は?'); 'let' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 コマンドの構文が誤っています。 C:\Users\○○○\Desktop\バッチファイル>if(!isNaN(text)){ C:\Users\○○○\Desktop\バッチファイル> --- 上記のエラーメッセージが出ましたので、プログラムの[let]の箇所を [echo]に変えて、以下のプログラムに修正致しました。 --- echo text=prompt('年齢は?'); if(!isNaN(text)){ let age=parseInt(text); echo(age<20){ console.log('未成年'); if(age>=6&&age<=15){ console.log('(義務教育)'); } }else if(age<65){ console.log('成人'); }else{ console.log('高齢者'); } } --- 「cmd.exe」-ショートカット」をクリックし、「hong.bat」を 入力した所、以下のエラーメッセージの画面が出てきました。 --- Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\○○○\Desktop\バッチファイル>hoge.bat C:\Users\○○○\Desktop\バッチファイル>echo text=prompt('年齢は?'); text=prompt('年齢は?'); コマンドの構文が誤っています。 C:\Users\○○○\Desktop\バッチファイル>if(!isNaN(text)){ C:\Users\○○○\Desktop\バッチファイル> --- 色々ネットで調べましたが、この先からどう修正してよいのか分かりませんでした。 ### 質問したい事 Windowsのバッチ(.bat)で、 ・年齢を入力すると年齢層の判定を行います。 ・年齢に応じて「未成年」「成人」「高齢者」の 3つの年齢層を表示します。 ・「未成年」のうち、義務教育期間の時は、 「未成年」(義務教育)」と表示します。 の上記3つの内容を実現したプログラムを作りたいです。 そもそも作成方法が根本的に間違っているのでしょうか? 最悪、同じような機能ではなくとも、似たような機能に 近づけるようにしたいです。 プラグラムのみならずIT関連の知識も足りない 初心者で、2日間自分で調べても分からず、 お手上げ状態で困っています。 何卒、回答よろしくお願いいたします。
回答: まずバッチファイルで入力させるには`setコマンド`を使います。 使い方は ``` set /P text="年齢は? " ``` という形になり、入力された値がtextという変数に入ることになります。 入力された値を比較する場合は`ifコマンド`を使います。 使い方は ``` if 条件 ( 条件が真の時に実行されるコマンド ) else ( 条件が偽の時に実行されるコマンド ) ``` というような形になります。(他にもありますので、詳しくはコマンドプロンプトで`if /?`を実行してください) また、`ifコマンド`で使用できる比較演算子は EQU - 等しい NEQ - 等しくない LSS - より小さい LEQ - 以下 GTR - より大きい GEQ - 以上 となります。 ですので、入力された値が20より小さいか判断したい場合は ``` if %text% lss 20 ( echo "未成年" ) ``` となります。 文字を出力する場合は`echoコマンド`を使います。 あとは上記のことを組み合わせれば実現できるかと思います。