我试图写一个简单的,如果存在批处理但是收到错误。
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文件是在来自另一个命令的脚本的这一部分之前生成的,它始终生成并且始终具有正在执行/查找的文本时间。我做错了什么?
答案 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