[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理用blat发送邮件出现错误,请帮忙看看哪里写错了?

本帖最后由 dyj545 于 2014-12-19 08:11 编辑

请帮忙看看那些写错了.运行后的结果
"磁盘空间剩余 33506MB"
Blat v2.5.0 w/GSS encryption (build : Sep 14 2005 22:46:29)

Blat saw and processed these options, and found fault with the last one...
    -to
Not enough arguments supplied for option: -to
Blat found fault with: -to

-to <recipient> : recipient list (also -t) (comma separated)
请按任意键继续. . .

以下是代码
  1. @echo off
  2. :::::::::::::: 查询硬盘空间::::::::::::::
  3. set dn=d
  4. for /f "tokens=2* delims=:" %%a in ('fsutil volume diskfree %dn%:') do set ds=%%a
  5. set ds=%ds:~0,-6%
  6. ::::::::::::::判断磁盘空间以MB为单位::::::::::::::
  7. if %ds% lss 50000 (
  8. echo "磁盘空间剩余%ds%MB"
  9. echo "磁盘空剩余%ds%MB" >body.txt
  10. echo "磁盘空间不足,请及时清理." >>body.txt
  11. set from=1234@163.com
  12. set user=1234@163.com
  13. set pass=1234
  14. set to=1234@163.com
  15. set subj=server6_disk_used_testmail
  16. set mail=body.txt
  17. set attach=*.jpg
  18. set server=SMTP服务器
  19. set debug=-debug -log blat.log -timestamp
  20. blat %mail% -to %to% -base64 -charset Gb2312 -subject %subj% -attach %attach% -server %server% -f %from% -u %user% -pw %pass%
  21. ) else (
  22. echo 磁盘空间足够
  23. )
  24. pause
复制代码

提示发现故障-TO 可是我去掉if判断 磁盘空间的语句时 单独运行却能正常发送邮件.

TOP

我自己解决了,用bat调用bat就可以了.
直接用if else不行就改成了调用bat
@echo off
set dn=d
for /f "tokens=2* delims=:" %%a in ('fsutil volume diskfree %dn%:') do set ds=%%a
set ds=%ds:~0,-6%
if %ds% lss 50000 (
echo "磁盘空间剩余%ds%MB"
echo "磁盘空间剩余%ds%MB" >body.txt
call sendmail1.bat
)
pause
执行后OK了

TOP

不用这么麻烦,本质是变量延时问题。对if语句块内变量开启变量延时并用!var!的方式来获取变量值就可以了。

TOP

回复 4# amwfjhh
感谢,我用变量延迟一步到位了.原来是这个原因.

TOP

哈,受你这个启发,我给财务部的同事写了一个每月工资条自动发送到各同事登记邮箱的批处理。免得她们一个一个地发邮件,工作量大就导致此事经常是你不主动问,她们就不会主动发……

TOP

回复  amwfjhh
感谢,我用变量延迟一步到位了.原来是这个原因.
dyj545 发表于 2014-12-22 13:30



    楼主给出最终正确的代码吧。谢谢

TOP

返回列表