批处理如何去除变量中指定字符及其后的所有字符?
比如说,我有以下代码段,得到了本机的外网IP,现在得到的IP字符串赋值给变量ip,但ip的最终内容是“IP地址,规属地”,我只想保留IP地址,要把逗号“,”和它后面的归属地去掉,而且因为要考虑通用性,不同地区的地名是不一样长的,所以不能用字符截取方式。
求助!!- ::获取本机外网IP、归属地并发送提醒!------------------------------------------------------------------
- ::预设变量值,探测失败时用
- set ip=
- ::生成VBS脚本到临时目录
- (Echo Set oDOM = WScript.GetObject^(WScript.Arguments^(0^)^)&Echo Do until oDOM.readyState = "complete"&Echo WScript.sleep 200&Echo Loop&Echo WScript.Echo oDOM.documentElement.outerText)>"%temp%\webget.vbs"
- ::执行IP探测并记录到TXT,实质上是VBS脚本访问网络,返回文本。该功能可移做他用。
- cscript //NoLogo /e:vbscript "%temp%\webget.vbs" "http://fw.qq.com/ipaddress">"%temp%\ip.txt"
- ::将文本内容读入并赋值给变量作为IP。如果返回值不纯净,使用时可用形如%ip:~1,15%的规则截取。
- set/p ip=<%temp%\ip.txt
- ::IP数据格式处理
- set ip=%ip:~24,-3%
- set ip=%ip:","","=,%
- set ip=%ip:","=%
- ::发送短信提示
- "%ProgramFiles%\飞信聊天\fetion\fetion" --c --index=1 --to=13887057861 --msg-type=1 --msg-gb="提示:启动完毕。\n主机:%computername%\n用户:%username%\n地址:%ip%">nul
- ::发送邮件提示
复制代码 将%ip%经过若干处理后赋值给ip2
"%ProgramFiles%\飞信聊天\HQmail\HQmail" [email=664017840@qq.com]664017840@qq.com[/email] yjbj [email=65925768@qq.com]65925768@qq.com[/email] 启动:%computername%,%ip2%,%username% 提示:启动完毕。主机:%computername%,用户:%username%,地址:%ip%>nul
最后一句,发送邮件,我想在邮件主题中只保留IP地址而不要归属地,到此为止%ip%=IP地址,归属地。请各位大大帮忙处理一下,最好是处理结果填入上面红色区域即可使用。
[ 本帖最后由 hsj 于 2010-9-27 23:16 编辑 ] |