找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31486|回复: 8

[系统相关] [已解决]获取外网IP的批处理为什么ECHO提示处于关闭状态或处于打开状态?

[复制链接]
发表于 2011-8-22 19:28:41 | 显示全部楼层 |阅读模式
本帖最后由 lovealei 于 2011-8-25 09:08 编辑

下面这段代码 是获取外网IP并赋值给变量的
  1. @echo off
  2. >html.vbs echo set http=createobject("Microsoft.XMLHTTP")
  3. >>html.vbs echo Set objfs=CreateObject("scripting.filesystemobject")
  4. >>html.vbs echo Set objf=objfs.CreateTextFile("html.txt",True)
  5. >>html.vbs echo url=" http://ip.loveroot.com/"
  6. >>html.vbs echo http.open "get",url,false
  7. >>html.vbs echo http.send
  8. >>html.vbs echo zhi=zhuanghuan(Http.responsebody)
  9. >>html.vbs echo s=(zhi)
  10. >>html.vbs echo objf.write s
  11. >>html.vbs echo Function zhuanghuan(vIn)
  12. >>html.vbs echo strReturn = ""
  13. >>html.vbs echo For i = 1 To LenB(vIn)
  14. >>html.vbs echo ThisCharCode = AscB(MidB(vIn,i,1))
  15. >>html.vbs echo If ThisCharCode ^< ^&H80 Then
  16. >>html.vbs echo strReturn = strReturn ^& Chr(ThisCharCode)
  17. >>html.vbs echo Else
  18. >>html.vbs echo NextCharCode = AscB(MidB(vIn,i+1,1))
  19. >>html.vbs echo strReturn = strReturn ^& Chr(CLng(ThisCharCode) * ^&H100 + CInt(NextCharCode))
  20. >>html.vbs echo i = i + 1
  21. >>html.vbs echo End If
  22. >>html.vbs echo Next
  23. >>html.vbs echo zhuanghuan = strReturn
  24. >>html.vbs echo End Function
  25. html.vbs
  26. for /f "tokens=4 skip=2 delims= " %%i in ('find /i "结果:" html.txt') do set ip=%%i
  27. echo 您的iP地址为
  28. echo %ip%
  29. del html.txt
  30. del html.vbs
  31. @echo off
  32. for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
  33. echo 内网IP
  34. echo %ip%
  35. pause
复制代码
单独存成一个文件执行是没有问题的,但如果加在一个批处理里面就提示 : ECHO 处于关闭状态 ,

此时
echo 您的iP地址为
echo %ip%

结果是
echo 您的iP地址为
echo ECHO处于关闭状态

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-8-22 19:36:35 | 显示全部楼层
说明 %ip% 为空,当 echo 命令没有任何参数时将显示回显状态“ECHO处于关闭状态”或者“ECHO处于打开状态”之类的
 楼主| 发表于 2011-8-22 19:38:46 | 显示全部楼层
本帖最后由 lovealei 于 2011-8-22 19:40 编辑

终于发现问题所在了. 原来是用FIND和FINDSTR 的不同结果
 楼主| 发表于 2011-8-22 19:55:29 | 显示全部楼层
这个问题是完结了,但还有一个问题,  上面代码单独存为一个文件 find 不会报错,但是加到一个批处理中 就会找不到 find  提示:
"find" 不是内部命令或外命令,也不是可以......


这个问题困扰了我很久了,在没有办法的情况下 我只能把find.exe findstr.exe  等外部命令都复制到批处理目录下..........
发表于 2011-8-22 20:35:04 | 显示全部楼层
回复 4# lovealei


那个批处理代码中是不是修改过path变量?

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2011-8-25 09:07:48 | 显示全部楼层
本帖最后由 lovealei 于 2011-8-25 09:10 编辑

想起来了,的确设置了一个PATH变量,原来不能设置这个变量啊
 楼主| 发表于 2011-8-25 09:22:54 | 显示全部楼层
本帖最后由 lovealei 于 2011-8-25 09:27 编辑

我这样设置一下可以么? SET path=c:\windows\system32

原来的path 被和谐了,我必须设置一下,不然会找不到这些命令,

除了上面的路径,xp 2003 系统变量path 默认的路径还有那些?
发表于 2011-8-25 16:30:26 | 显示全部楼层
这个是用来做路由表的吗
 楼主| 发表于 2011-8-26 12:05:34 | 显示全部楼层
回复 8# brqtpt007


    不是,只是为了得到外网IP
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 22:37 , Processed in 0.020947 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表