-1

我要做的是编写一个批处理文件,当做出指定的答案时,它将转到另一个点并编写一个批处理文件,然后调用该批处理文件来运行。如果做出任何其他答案,它只是转到另一个点并遵循一系列是/否答案。

到目前为止,我已经制作了两个批处理文件。一个只是教我如何结合使用 set 和 if 命令。另一个是针对上述问题。

以下是批次的两个文本文件:

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

第二个文件(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 失败。

问题之一是这条线

 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 回答