Windows 批处理文件中的if-else语句格式

Windows 批处理文件中的if-else语句格式,windows,shell,batch-file,if-statement,Windows,Shell,Batch File,If Statement,我不熟悉批处理脚本,正在尝试执行以下if语句,命令提示符返回一个有关语法的错误。我在互联网上搜索过,似乎无法直接回答如何在批处理文件中执行if-else语句。此声明的正确格式是什么?任何帮助都将不胜感激 if !cnt! geq 20 ( if !size! lss 5000000(sent>%cd%\EmailSent.txt mailsend1.19.exe -to !email! -from te

我不熟悉批处理脚本,正在尝试执行以下if语句,命令提示符返回一个有关语法的错误。我在互联网上搜索过,似乎无法直接回答如何在批处理文件中执行if-else语句。此声明的正确格式是什么?任何帮助都将不胜感激

if !cnt! geq 20 (
                    if !size! lss 5000000(sent>%cd%\EmailSent.txt
                        mailsend1.19.exe -to !email! -from test@gmail.com -ssl -smtp smtp.gmail.com -port 465 -sub "test" -M "The capture quality is not sufficient.  Please retake capture." -auth-plain -user "test@gmail.com" -pass) else(sent>%cd%\EmailSent.txt
                        mailsend1.19.exe -to !email! -from test@gmail.com -ssl -smtp smtp.gmail.com -port 465 -sub "test" -M "The capture quality is ok. Patient good to go." -auth-plain -user "test@gmail.com" -pass )
                    )
空间意义重大。否则必须在一行上

if "string1" operator "string2" (
 dothis
 then dothis
 after that dothis
) else (
 dothat
 then dothat
 after that dosomethingelse
)

这可能不是最好的代码,但这或多或少就是最好的代码

@echo off
IF %this%==not_this (
     echo no match
) ELSE IF %this%==this (
     echo matches
) ELSE (
     echo Did not find match
)

在运行脚本之前,您可以通过执行设置this=this或设置this=not\u this或设置this=something\u其他操作来测试脚本,以查看不同的结果。

我会减少冗余并使用更好的缩进:

Set MailArgs=-to !email! -from test@gmail.com -ssl -smtp smtp.gmail.com -port 465 -sub "test" -auth-plain -user "test@gmail.com" -pass 
if !cnt! geq 20 (
    if !size! lss 5000000 (
        sent>%cd%\EmailSent.txt
        mailsend1.19.exe %MailArgs% -M "The capture quality is not sufficient. Please retake capture."
    ) else ( 
        sent>%cd%\EmailSent.txt
        mailsend1.19.exe %MailArgs% -M "The capture quality is ok. Patient good to go."
    )
)

我不清楚sent>%cd%\EmailSent.txt应该做什么。

我添加这个答案只是因为您的和LotPings代码块都包含不必要的代码。在每个场景中都会发送电子邮件,这意味着您只能发送和写入文件一次

如果cnt!GEq 20 如果大小Lss 5000000 Set _M=捕获质量不够。请重新捕获。 其他的 Set _M=捕获质量正常。病人:好的。 MailSend1.19.exe-发送至!电子邮件-从…起test@gmail.com-ssl-smtp.gmail.com-端口465-子测试-M_M-普通用户身份验证test@gmail.com-通过 Echo已发送>%cd%\EmailSent.txt
是的,我知道。我该如何做多行if-else语句?OP问如果他特别说“if-else”如何做多行else语句@GerhardBarnard字面意思是他问什么是格式化此语句的正确方式?标题if-else语句在批处理文件中格式化我在互联网上搜索过的内容,似乎无法得到直接的答案如何在批处理文件中执行if-else语句以及Magoo答案中的注释是的,我知道。如何执行多行if-else语句?它也应该是echo sent而不是sent>%cd%\EmailSent.txt%
Set MailArgs=-to !email! -from test@gmail.com -ssl -smtp smtp.gmail.com -port 465 -sub "test" -auth-plain -user "test@gmail.com" -pass 
if !cnt! geq 20 (
    if !size! lss 5000000 (
        sent>%cd%\EmailSent.txt
        mailsend1.19.exe %MailArgs% -M "The capture quality is not sufficient. Please retake capture."
    ) else ( 
        sent>%cd%\EmailSent.txt
        mailsend1.19.exe %MailArgs% -M "The capture quality is ok. Patient good to go."
    )
)