-1

私がやろうとしているのは、指定された回答が行われたときに別のポイントに移動し、実行するために呼び出されるバッチファイルを作成するバッチファイルを作成することです。そして、他の答えが出された場合、それは別のポイントに進み、一連のはい/いいえの答えに従います.

これまでに 2 つのバッチ ファイルを作成しました。set コマンドと if コマンドを組み合わせて使用​​する方法を教えてくれるだけです。もう 1 つは、上記の問題に対するものです。

バッチ用の 2 つのテキスト ファイルを次に示します。

@echo off
echo What is your first and last name?
set /p answer
if /i {%answer%}=={Tyler Zieske} (call tyler.bat)

2 番目のファイル (tyler.bat)

@echo off
echo Are you from South Dakota?
set /p answer=Yes or No (Y/N)?
if /i {%answer%}=={y} (goto :yes)
if /i {%answer%}=={yes} (goto :yes)
goto :no
:yes
echo Your name must be Tyler Zieske
pause

:no
echo Are you a child?
set /p ans=Yes or No (Y/N)?
if /i {%ans%}=={y} (goto :tyler)
if /i {%ans%}=={yes} (goto :tyler)
goto :zieske
:tyler
echo Your name must be Tyler Zieske
pause

:zieske
echo You must not be Tyler Zieske
pause

編集:

そのすべての問題の代わりに、テキストを元のバッチ ファイルから新しいバッチ ファイルにコピーした場合はどうなるでしょうか。

4

1 に答える 1

0

質問するのを忘れていました。

しかし、あなたのコードは期待どおりに機能しないと推測できます。
入力できますTyler Zieskeが、goto は失敗します。

問題の1つはこの行です

 if /i {%answer%}=={Tyler Zieske} (goto :call
 ffff

閉じ括弧はありません。バリアントが機能しないため、に
変更{%answer}する必要があります。"%answer%"例: 回答の内容abc

 if /i {Tyler}=={Tyler Zieske} (echo test)

ただし、後にスペースが=={Tylerあり、比較文字列の一部ではなくコマンドとして解釈されるため、これは失敗します。

引用符を使用すると、スペースがエスケープされるため、比較文字列の一部になります。

if /i "%answer%"=="Tyler Zieske" goto :myLabel
于 2013-02-07T18:54:44.533 に答える