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

时间:2017-04-26 04:13:45

标签: 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 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 )
                    )

4 个答案:

答案 0 :(得分:1)

这可能不是最好的代码,但这或多或少是如此。

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

您可以在运行脚本之前执行set this=thisset this=not_thisset this=something_else来测试它,以查看不同的结果。

答案 1 :(得分:0)

if "string1" operator "string2" (dothis) else (dothat)

空间显着。 ) else (必须在一行上。

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

答案 2 :(得分:0)

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

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应该做些什么。

答案 3 :(得分:0)

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

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