写入另一个批处理文件的批处理文件

时间:2013-02-07 17:06:10

标签: batch-file

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

到目前为止,我已经制作了两个批处理文件。一个只是教我如何结合使用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

编辑:

如果我只是将原始批处理文件中的文本复制到新的批处理文件中,那该怎么办呢?

1 个答案:

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