将STDOUT转换为变量

jas*_*son 6 email-integration dos batch-file

我在批处理文件中使用sendemail.在发送电子邮件结束时,它会回复一个简短或失败的消息.例如

Jan 10 00:46:54 villa sendemail[456]: Email was sent successfully!
Run Code Online (Sandbox Code Playgroud)

是否可以将此消息捕获到变量中进行处理?

谢谢

esa*_*sac 11

是的,您需要通过for循环执行sendmail:

for /f "tokens=*" %%a in ('[sendmail command line]') do (
    set VAR=%%a
)
Run Code Online (Sandbox Code Playgroud)

运行后,VAR将被设置为sendmail输出的最后一行.然后,您可以在该行上进行处理

for /f "tokens=5,* delims= " %%a in (%VAR%) do (
    if "%%b"=="Email was sent successfully!" (
        echo SUCCESS
        exit /b 0
    ) else (
        echo FAILURE
        exit /b 1
    )
)
Run Code Online (Sandbox Code Playgroud)

  • 请注意:在Stackoverflow而不是谷歌上开始寻找这样的东西. (4认同)

gho*_*g74 -1

通常,您只需使用 for 循环来捕获输出。请参阅此处 注释 4。(并在互联网上搜索更多信息)