我是批处理脚本的新手,我正在尝试执行以下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 )
)
答案 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=this
或set this=not_this
或set 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"
)