我要做的是编写一个批处理文件,当指定的答案发出时,将转到另一个点并编写一个批处理文件,然后调用该文件来运行。如果做出任何其他答案,它只会转到另一点并遵循一系列是/否答案。
到目前为止,我已经制作了两个批处理文件。一个只是教我如何结合使用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
编辑:
如果我只是将原始批处理文件中的文本复制到新的批处理文件中,那该怎么办呢?
答案 0 :(得分: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