Batch file 带有cmake的批处理文件中带条件的子例程

Batch file 带有cmake的批处理文件中带条件的子例程,batch-file,Batch File,我编写了一个批处理文件,用于自动生成cmake和nmake,但其中的条件和子例程存在问题。我想发送一封电子邮件“当且仅当”levelerror不等于0时”。但当我问这个问题时,他还是去了子程序 我已经放置了许多用于调试的echo%errorlevel%。。。但是我找不到我的错误 这是我的剧本: cd C:\Users\name-user\Documents\Repos\corealpi\cmake\nmake echo %errorlevel% rm -R * echo %errorlevel

我编写了一个批处理文件,用于自动生成cmake和nmake,但其中的条件和子例程存在问题。我想发送一封电子邮件“当且仅当”
levelerror
不等于0时”。但当我问这个问题时,他还是去了子程序

我已经放置了许多用于调试的
echo%errorlevel%
。。。但是我找不到我的错误

这是我的剧本:

cd C:\Users\name-user\Documents\Repos\corealpi\cmake\nmake
echo %errorlevel%

rm -R *
echo %errorlevel%

rmdir /q /s ..\..\build\cmake_x86d\
echo %errorlevel%

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"
echo %errorlevel%

>"..\log\mailCmakeDeb.txt" cmake -DCMAKE_BUILD_TYPE=Debug -G"NMake Makefiles" ..\
echo %errorlevel% 
if %errorlevel% neq 0 goto :mailcmaked      
echo %errorlevel%

>"..\log\buildDeb.log" nmake
echo %errorlevel%
if %errorlevel% neq 0 goto :mailnmaked
echo %errorlevel%

pause

:mailcmaked
sendEmail -f from@mail.com -u "cmake failed" -t someone@mail.com -m "cmake debug failed" -a ..\log\mailCmakeDeb.txt -s 192.168.x.x
echo %errorlevel%
exit 1

:mailnmaked
grep -Eo '.{0,20}error.{0,100}' ..\log\buildDeb.log > ..\log\mailBuildDeb.txt
sendEmail -f from@mail.com -u "build debug/x86 failed" -t someone@mail.com -m "Nmake debug failed" -a ..\log\mailBuildDeb.txt -s 192.168.x.x
echo %errorlevel%
exit 1
我总是错误=0,但它仍然要运行
:mailcmaked

你能告诉我为什么吗


谢谢

您的代码在哪里输入测试了吗
:mailcmaked
?在我看来,没有任何失败,一旦跳过
暂停
,它将始终执行子例程中的代码。如果我删除
暂停
,它仍会发送电子邮件。。。我搜索一种方式,他只是发送电子邮件,如果cmake返回错误不同于0。。。但正如您所说,他总是执行
:mailcmaked
部分。我不明白为什么?就像@MCND说的,暂停后需要一个
exit
语句<代码>:mailcmaked不是一个函数,它只是一个标签,抱歉@MCND我第一次不明白。我在暂停后添加了退出,这非常有效。我有什么愚蠢的错误吗谢谢