0

基本的に、私は質問を設定しており、「中断」と答えると、「最後にそこを歩くことにしました...」と言う必要があり、その下に「男性はどのように反応しますか?」次に、1 ~ 21 の乱数を生成してから一時停止する必要があります。ただし、「中断」と答えると、プログラムが閉じます。ただし、乱数ジェネレーターを削除すると、「男性はどのように反応しますか?」の後に一時停止します。そして私は出ることができます。ナンバージェネレーターがそこにあることの何が問題になっていますか?

コードは次のとおりです。

echo Do you interrupt or wait until they are finished talking?
echo.
set /p choice=
if %choice%==interrupt (
  echo You decide to finally walk over there. You ask the man who is telling the story, "So what's in the labyrinth?"
  echo How does the man react?
  pause
  set /a num=((20 + 1) * %random%) / 32768 + 1
  echo %num%
  pause
  exit
)

読んでくれたり、返信してくれてありがとう!

4

4 に答える 4

2

コード ブロック内で値が変更された変数を読み取りたい場合は、常にdelayed expansionand!variables!の代わりに%variables%. さらに、forループ パーサー) はコード ブロック内のすべての閉じ括弧を読み取り、ブロックを終了しようとします。この括弧は、^キャレットまたは二重引用符でエスケープする必要があります。

于 2013-07-14T07:54:29.617 に答える
2

あなたは閉鎖を逃れる必要があります)

交換

set /a num=((20 + 1) * %random%) / 32768 + 1

set /a num=((20 + 1^) * %random%^) / 32768 + 1
于 2013-07-14T07:57:40.773 に答える
0

このように方程式を引用符で囲む必要があります

set /a num="((20 + 1) * %random%) / 32768 + 1"

またはこれ

set /a "num=((20 + 1) * %random%) / 32768 + 1"

またはステファンが言ったように、閉じ括弧をエスケープすることもできます)

%num%また、ブロック内で使いたい場合はif "%choice%"=="interrupt" (...)遠藤さんの言うように遅延展開を使わないといけません。

コードを改善するには、比較する前に上記のように選択肢を引用符で%choice%囲み、スペースがコードを混乱させないようにする必要があります。

于 2013-07-14T08:08:32.387 に答える