批处理脚本冒险

时间:2011-08-05 09:11:41

标签: windows if-statement batch-file

这是我的批处理脚本文件。有两种情况


  • 情景1

@echo off
set name=
set /P TypeName=Name: %=%

if %TypeName% == "abcd" goto correctName
else goto wrongName

:correctName
echo Correct Name
:end

:wrongName
echo Wrong Name
:end

当我输入abcd作为输入时,我得'else'不被识别为内部或外部命令,可操作程序或批处理文件

名称错误


  • 情景2

@echo off
set name=
set /P TypeName=Name: %=%

if %TypeName% EQA "abcd" goto correctName
if %TypeName% NEQ "abcd" goto wrongName

:correctName
echo Correct Name
:end

:wrongName
echo Wrong Name
:end

当我输入abcd作为输入时,我得到此时EQA意外。

我的剧本中有什么问题吗?我在这里遗漏了什么

4 个答案:

答案 0 :(得分:1)

  1. ELSE应与IF关键字位于同一行,或与IF的右括号位于同一行。

    像这样:

    IF %TypeName% == "abcd" GOTO correctName ELSE GOTO wrongName
    

    或者像这样:

    IF %TypeName% == "abcd" (
      ECHO Correct.
      GOTO correctName
    ) ELSE GOTO wrongName
    
  2. Equal 运算符的正确关键字为EQU

    IF %TypeName% EQU "abcd" GOTO correctName
    

答案 1 :(得分:0)

第一个例子几乎是正确的,除了批处理文件中IF / ELSE语句的格式如下:

IF <statement>  (
..
..
) ELSE (
...
...
)

所以,只需使用该格式即可。

答案 2 :(得分:0)

你不一定需要使用else,比如

@echo off
set name=
set /P TypeName=Name: %=%

if %TypeName% == "abcd" goto correctName
goto wrongName

:correctName
echo Correct Name
:end

:wrongName
echo Wrong Name
:end

如果%TypeName%==“abcd”它将跳转到:correctName,如果不是,它将简单地落到下一行并跳转到:wrongName。

答案 3 :(得分:0)

为了结束这篇文章,我以这种方式获得了预期的输出 -

@echo off
set name=
set /P TypeName=Name: %=%

if "%TypeName%" == "abcd" (
echo Correct Name
) else (
echo Wrong Name
)