@echo off
set number=%random%*101/32767
set answer=0
set count=0
set usercount=0
:more
if %count% == 10 (
echo 残念・・・難しかったようですね。
echo 正解は、「%number%」でした。
)
echo **********************************************
echo 1~100までの数を入力して、数を当ててください。
set /P answer="数を半角数字で入力: "
if not defined answer (
echo 値を入力しなおしてください
goto more
)
if "%answer%" equ "%number%"(
echo ------------------------------------
echo 正解です!
echo あなたは、%count%回で数を当てました!
) else (
echo ------------------------------------
echo 残念、不正解です。
rem 残り回数計算
set /a count=%count%+1
set /a usercount=10-%count%
if "%answer%" lss "%number%"(
echo ヒント:数は、%answer%より大きい。
echo ------------------------------------
)else if "%answer%" gtr "%number%"(
echo ヒント:数は、%answer%より小さい。
echo ------------------------------------
)
echo 残り%usercount%回回答できます。
goto more
)
pauce
上のことを書いたbatファイルを実行したところ、「構文が誤っています」とだけ表示されて、どこが間違っているのかわかりません。どなたか分かる方、教えてください。
No.3ベストアンサー
- 回答日時:
ざっとチェックしただけなので、見逃しやおかしな点があったらすみません。
一番最後の「)」を消します。
「if "%answer%" lss "%number%"(」の行頭に、
「)else 」を付け、
「)else if "%answer%" lss "%number%"(」にします。
「~ if ~ equ ~ (」のように、
「(」の前に、半角スペースを入れます。
「set number=%random%*101/32767」に、
「/a」を付け、
「set /a number=%random%*101/32767」にします。
数値を比較する場合は、
「if "%~%" equ "%~%" (」のように「"」は付けず、
「if %~% equ %~% (」のように記述します。
「) else (」という条件は、
「) ~ lss ~ (」や
「) ~ gtr ~ (」より前ではなく、
最後に記述します。
――――――――――――――
rem 残り回数計算
set /a count=%count%+1
set /a usercount=10-%count%
――――――――――――――
の3行は、
――――――――――――――
if %count% == 10 (
echo 残念・・・難しかったようですね。
echo 正解は、「%number%」でした。
)
――――――――――――――
の下に移動させます。
――――――――――――――
@echo off
――――――――――――――
の下に、
――――――――――――――
:start
――――――――――――――
を書き加えます。
――――――――――――――
echo 正解は、「%number%」でした。
――――――――――――――
の下に
――――――――――――――
pause
cls
goto start
――――――――――――――
を書き加えます。
――――――――――――――
echo あなたは、%count%回で数を当てました!
――――――――――――――
の下に、
――――――――――――――
pause
cls
goto start
――――――――――――――
を書き加えます。
――――――――――――――
echo 残り%usercount%回回答できます。
――――――――――――――
の行頭に、
――――――――――――――
if not "%usercount%"=="0"
――――――――――――――
を加え、
――――――――――――――
if not "%usercount%"=="0" echo 残り%usercount%回回答できます。
――――――――――――――
にします。
言われたとおりにやってみると、うまくできました!
よく見直してみるともっと簡略化できたところがあったり、意味わからない記述をしていたと気づけました。
if文を組み合わせすぎて、ごちゃごちゃになってしまっていたので、もっと勉強して、他人にもわかりやすいようなプログラムを組むことを目標に、頑張っていきたいと思います。
また、いままでメモ帳を使っていたのですが、これを機にAtomとかサクラエディタにして、()が多すぎないかとかを確認しながら書こうと思いました。
教えていただき、ありがとうございました。
No.2
- 回答日時:
>@echo off
これを削って実行してみてください。
実行状況が表示されるので、どこで間違ってるかわかりやすいです。
教えていただき、ありがとうございました。
今後batファイルを書く機会があったら、その時のエラーの対策として参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル内置換
-
batファイル 行った履歴をテキ...
-
メーリングリスト宛てのメール...
-
batが動かない
-
PowerShellで自分が書いたコマ...
-
aptでインストールしたプログラ...
-
.cshrcでのエラー
-
コマンドプロンプトの危険性を...
-
ソフトのインストール場所って...
-
VB6 二重起動確実防止について
-
Open Office Org 急に起動しな...
-
バッチスクリプト処理でエラー...
-
BootCamp環境を外付けHDDに入れ...
-
OS インストール場所確認
-
CSHが使えない REDHAT
-
出力のリダイレクトコマンド「>...
-
バッチファイルで多重起動を防ぐ
-
ネットワーク接続を確認する手...
-
複数ファイルのシンボリックリンク
-
大塚商会で新しくシステム、ス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル内置換
-
exeファイルの実行結果をテキス...
-
コマンド実行結果のファイル出力
-
メーリングリスト宛てのメール...
-
dsmoveコマンドをBATファイルで...
-
linuxのsshの反応が非常に遅い。
-
cron で rsync が実行できない
-
USBメモリ内のバッチで書き出す...
-
batが動かない
-
デバッグ停止中 一つ戻る
-
スタートアップスクリプトを実...
-
batファイル 行った履歴をテキ...
-
圧縮に成功しているか?
-
【Mac/Xcode】カレントディレク...
-
Mac OS ventura のapplescript...
-
nbtstat -aコマンドについてお...
-
リモートコンピュータの再起動...
-
Win7でコンピュータ名変更を自動で
-
ソフトのインストール場所って...
-
バッチスクリプト処理でエラー...
おすすめ情報
数あてゲームを作ろうとしました。
1~100までの数を生成して、当たっていれば正解と伝え、違っていれば入力された数が正解の数より小さいか大きいか表示するといったプログラムです。