5

バッチファイルで、ユーザーに質問したいと思います。

私は次のように書いた:

SET /P ANSWER=Click Y to continue or N to stop (Y/N)

しかし、私は最後のないメッセージを受け取ります)

誰かが理由を知っていますか?

ありがとう!

4

1 に答える 1

13

括弧で囲まれたブロック内でそのプロンプトを使用しているため、たとえば

if ... (
  ...
  set /P ANSWER=Blah (Y/N)
)

また

for %%x in (...) do (
  ...
  set /P ANSWER=Blah (Y/N)
)

その場合、閉じ括弧をエスケープする必要があります。

SET /P ANSWER=Click Y to continue or N to stop (Y/N^)

または、引数全体を引用します。

SET /P "ANSWER=Click Y to continue or N to stop (Y/N)"

それ以外の場合は、ブロックを閉じます。そして、その閉じ括弧の後に何かがあると、構文エラーが発生します。

choiceあなたがそこで行うことのより簡単な方法はおそらくコマンドでしょう:

choice /M "Press Y to continue or N to stop" /c YN

その後、エラーレベルを確認して、ユーザーの選択を確認できます。

if errorlevel 255 (
  echo Error
) else if errorlevel 2 (
  echo No.
) else if errorlevel 1 (
  echo Yes.
) else if errorlevel 0 (
  echo Ctrl+C pressed.
)
于 2012-12-17T14:01:32.143 に答える