質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

  • JavaScript

    22124questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Windows

    1796questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • コマンドプロンプト

    461questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

  • バッチファイル

    315questions

    バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Windowsのバッチ(.bat)であるプログラムを実現したい。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 690

natade

score 7

 前提・実現したいこと

初めて質問させていただきます。
文章が長くなりますが答えていただけると助かります。

私はプログラミングに関して全くの初心者です。

とある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日間色々調べたのですが、作成方法が分からずに困っています。

 発生している問題・エラーメッセージ

試したこととして、
①デスクトップに「バッチファイル」という名のフォルダーを作成
②その中に、「cmd.exe」のショートカットと上記のプログラムを
メモ帳で貼り付けファイル名を「hong.bat」に変更したファイルを
「バッチファイル」のフォルダーの中に貼り付けます。
③「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日間自分で調べても分からず、
お手上げ状態で困っています。

何卒、回答よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

.batはjavascriptではなくバッチ言語とでも言うべき全く別の言語です。

@setlocal
@echo off
set /p AGE=年齢は? 
IF %AGE% LSS 20 (
  IF %AGE% LSS 15 (
    echo 未成年^(義務教育^)
  ) ELSE (
    echo 未成年
  )
) ELSE (
  IF %AGE% LSS 65 (
    echo 成人
  ) ELSE (
    echo 高齢者
  )
)
@endlocal

多くのWindowsの場合WSHを用いてJScriptによってjavascriptっぽいものが動きます
拡張子を.jsにしてダブルクリックした時に起動したハズです。

これをどうにか.batからやる方法もある事はあります。

@if(0)==(0) ECHO OFF
cscript.exe //nologo //E:JScript "%~f0" %*
@rem pause
GOTO :EOF
@end
// ここからJScript
WScript.Echo('年齢は?');
var text=WScript.stdin.readLine();
if(!isNaN(text)){
var age=parseInt(text);
if(age<20){
WScript.Echo('未成年');
if(age>=6&&age<=15){
WScript.Echo('(義務教育)');
}
}else if(age<65){
WScript.Echo('成人');
}else{
WScript.Echo('高齢者');
}
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/08 15:54

    ご回答ありがとうございました。無事表示することができました。ベストアンサーに選ばせていただきました。よろしくお願いいたします。

    キャンセル

+2

まずバッチファイルで入力させるにはsetコマンドを使います。
使い方は

set /P text="年齢は? "


という形になり、入力された値がtextという変数に入ることになります。
入力された値を比較する場合はifコマンドを使います。
使い方は

if 条件 (
    条件が真の時に実行されるコマンド
) else (
    条件が偽の時に実行されるコマンド
)


というような形になります。(他にもありますので、詳しくはコマンドプロンプトでif /?を実行してください)
また、ifコマンドで使用できる比較演算子は
EQU - 等しい
NEQ - 等しくない
LSS - より小さい
LEQ - 以下
GTR - より大きい
GEQ - 以上
となります。
ですので、入力された値が20より小さいか判断したい場合は

if %text% lss 20 (
    echo "未成年"
)


となります。

文字を出力する場合はechoコマンドを使います。

あとは上記のことを組み合わせれば実現できるかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/08 15:59

    ご回答と丁寧な解説ありがとうございます。まだ初心者ですが、おかげで仕組みについて少し理解することができました。よろしくお願いいたします。

    キャンセル

0

そもそも作成方法が根本的に間違っているのでしょうか?

はい、バッチファイルは実行コマンドを並べるもので、JavaScriptとは全く無縁です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/08 10:42

    さっそくの回答ありがとうございます。では、どのように作成すれば解決するのでしょうか?それすらも分からない愚かな初心者のためよろしくお願いいたします。

    キャンセル

  • 2018/08/08 10:57

    「set /p」コマンドを使ってユーザー入力をさせて、ifで数値比較をさせる、という流れになります。

    キャンセル

  • 2018/08/08 16:00

    回答ありがとうございます。知識のない自分にとって、今後の参考になりました。よろしくお願いいたします。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • JavaScript

    22124questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Windows

    1796questions

    Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

  • コマンドプロンプト

    461questions

    コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

  • バッチファイル

    315questions

    バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。