中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-19 11:49
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于用批处理发送IP到邮箱的另一问题? 查看 1,976 回复 7
楼 主 关于用批处理发送IP到邮箱的另一问题? 发表于 2006-06-16 11:16 ·  中国 广东 深圳 电信
初级用户
积分 117
发帖 37
注册 2006-06-08 12:23
UID 56740
状态 离线
前些日子在本坛发了一个如何用批处理发送IP到邮箱的问题,得到坛里的朋友们指指点点。本人受益非浅,但本人对这方面的知识实在太菜,还有一问题不能解决。唯有再发此贴请求高人指点。
原批处理代码:
@echo off
for /f "tokens=2 delims=:" %%i in ('"ipconfig|findstr /I /c:"ip address""') do set a=%%i

echo NameSpace="http://schemas.microsoft.com/cdo/configuration/" >1.vbs
echo Set Email=CreateObject("CDO.Message") >>1.vbs
echo Email.From="你发送的邮箱地址" >>1.vbs
echo Email.To="你接收的邮箱地址" >>1.vbs
echo Email.Subject="TEST" >>1.vbs
echo Email.Textbody="%a%" >>1.vbs
echo With Email.Configuration.Fields >>1.vbs
echo ^.Item(NameSpace^&"sendusing")=2 >>1.vbs
echo ^.Item(NameSpace^&"smtpserver")="SMTP地址" >>1.vbs
echo ^.Item(NameSpace^&"smtpserverport")=25 >>1.vbs
echo ^.Item(NameSpace^&"smtpauthenticate")=1 >>1.vbs
echo ^.Item(NameSpace^&"sendusername")="用户名" >>1.vbs
echo ^.Item(NameSpace^&"sendpassword")="密码" >>1.vbs
echo ^.Update >>1.vbs
echo End With >>1.vbs
echo Email.Send >>1.vbs

cscript c:\1.vbs
del c:\1.vbs

问题:在联网的情况下批处理运行后能成功将IP发到邮箱,但如果没有联网,那就会出错。如何修改命令使批处理在系统联网的情况下才运行,在没联网的时候不运行或不出错误显示?
2 发表于 2006-06-16 11:31 ·  中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
UID 43784
来自 北京
状态 离线
把倒数第二句改一下试试:

cscript c:\1.vbs 1>nul 2>nul||echo 发送错误...

没有经过实验,请楼主实验后报告一下情况,谢谢........
3 发表于 2006-06-16 12:02 ·  中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
UID 43784
来自 北京
状态 离线
可以尝试以下代码,上面的可能不成:

@echo off
for /f "tokens=2 delims=:" %%i in ('"ipconfig|findstr /I /c:"ip address""') do set a=%%i
echo on error resume next >1.txt
echo NameSpace="http://schemas.microsoft.com/cdo/configuration/" >>1.vbs
echo Set Email=CreateObject("CDO.Message") >>1.vbs
echo Email.From="你发送的邮箱地址" >>1.vbs
echo Email.To="你接收的邮箱地址" >>1.vbs
echo Email.Subject="TEST" >>1.vbs
echo Email.Textbody="%a%" >>1.vbs
echo With Email.Configuration.Fields >>1.vbs
echo ^.Item(NameSpace^&"sendusing")=2 >>1.vbs
echo ^.Item(NameSpace^&"smtpserver")="SMTP地址" >>1.vbs
echo ^.Item(NameSpace^&"smtpserverport")=25 >>1.vbs
echo ^.Item(NameSpace^&"smtpauthenticate")=1 >>1.vbs
echo ^.Item(NameSpace^&"sendusername")="用户名" >>1.vbs
echo ^.Item(NameSpace^&"sendpassword")="密码" >>1.vbs
echo ^.Update >>1.vbs
echo End With >>1.vbs
echo Email.Send >>1.vbs
echo if err.number^<^>0 then>>1.vbs
echo wscript.echo 发送错误......>>1.vbs
echo wscript.quit >>1.vbs
echo end if >>1.vbs

cscript c:\1.vbs
del c:\1.vbs
没有经过测试,请测试后报告,谢谢
4 发表于 2006-06-16 18:04 ·  中国 广东 深圳 电信
初级用户
积分 117
发帖 37
注册 2006-06-08 12:23
UID 56740
状态 离线
测试平台:WINDOWS XP
测试机型:1,IBM T60(新系统) 2,兼容机
测试次数:20次以上
设原来的批处理为A, 有隐藏错误功能的批处理为B。测试方法:
1,联网情况下:运行A能成功发送IP到邮箱,但有窗口出现,约15秒消失;运行B出现错误提示“c:\1.vbs<18,14>microsoft vbscript 编译器错误:无效字符”,有窗口出现,10秒左右消失窗口。
2,断网情况下:运行A有运行窗口出现,在IBM T60一闪而过,在兼容机需要几秒钟后才消失。运行B时,在IBM T60一闪而过。在兼容机上还没试
5 发表于 2006-06-16 18:05 ·  中国 广东 深圳 电信
初级用户
积分 117
发帖 37
注册 2006-06-08 12:23
UID 56740
状态 离线
我在测试中,发现不是每次运行批处理就会发送IP的。大概运行四五次才有一次成功发送
6 发表于 2006-06-16 18:12 ·  IANA 局域网IP(Private-Use)
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
这个应该是 邮件服务器的问题,响应慢了~~我连QQ邮箱也是要尝试5次以上的~~

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
7 发表于 2006-06-16 18:18 ·  中国 广东 深圳 电信
初级用户
积分 117
发帖 37
注册 2006-06-08 12:23
UID 56740
状态 离线
Originally posted by electronixtar at 2006-6-16 18:12:
这个应该是 邮件服务器的问题,响应慢了~~我连QQ邮箱也是要尝试5次以上的~~

是的
8 发表于 2006-06-16 18:30 ·  中国 广东 深圳 电信
初级用户
积分 117
发帖 37
注册 2006-06-08 12:23
UID 56740
状态 离线
呵呵,那位高手网友bagpipe做了一个佛字,本人依赫尔葫芦画瓢做了一个神字,见笑了
论坛跳转: