批处理文件IF文件存在GOTO

时间:2014-07-08 15:00:00

标签: windows batch-file

我试图写一个简单的,如果存在批处理但是收到错误。

  

GOTO此时出人意料。

以下是我的代码:

::find /i "The OU has been created" error_ou.log

IF errorlevel 0 (echo Success. The OU has been created) GOTO :success

IF errorlevel 1 (echo Fail. The OU has NOT been created) GOTO :fail

    :success

    :fail

error_ou.log文件是在来自另一个命令的脚本的这一部分之前生成的,它始终生成并且始终具有正在执行/查找的文本时间。我做错了什么?

3 个答案:

答案 0 :(得分:1)

尝试这个简单的编辑:

find /i "The OU has been created" error_ou.log

IF errorlevel 1 (echo Fail. The OU has NOT been created & GOTO :fail)

IF errorlevel 0 (echo Success. The OU has been created & GOTO :success)

:success

:fail

答案 1 :(得分:1)

if errorlevel 1 (
    echo failure
    goto failure
) else (
    echo success
    goto success
)

或者,更类似于您的代码

if errorlevel 1 ( echo failure & goto failure )
echo success & goto success

您的代码存在两个问题。

第一个导致您看到的错误:您忘记在else中包含if关键字和/或两个命令的串联。

第二个是逻辑错误。对于任何等于或大于if errorlevel n的错误级别值,n都是正确的,因此,如果您的第一次测试是if errorlevel 0,那么它将始终"始终"是真的。检查错误级别必须从较高值到较低值。

这样,在第二个示例代码中,省略了if errorlevel 0,之前的if errorlevel 1将处理来自find命令的任何错误,只留下errorlevel 0的情况}。

答案 2 :(得分:-2)

语法错误。使用: 如果GOTO在某个地方

但是你不能使用: 如果某事做某事然后GOTO某处

尝试:

IF errorlevel 0 GOTO success
IF errorlevel 1 GOTO fail

:success
Echo Success:  The OU has been created
GOTO end

:fail
Echo Fail
GOTO end

:end