Board logo

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

作者: lovealei    时间: 2011-8-22 19:28     标题: [已解决]获取外网IP的批处理为什么ECHO提示处于关闭状态或处于打开状态?

本帖最后由 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处于关闭状态
作者: CrLf    时间: 2011-8-22 19:36

说明 %ip% 为空,当 echo 命令没有任何参数时将显示回显状态“ECHO处于关闭状态”或者“ECHO处于打开状态”之类的
作者: lovealei    时间: 2011-8-22 19:38

本帖最后由 lovealei 于 2011-8-22 19:40 编辑

终于发现问题所在了. 原来是用FIND和FINDSTR 的不同结果
作者: lovealei    时间: 2011-8-22 19:55

这个问题是完结了,但还有一个问题,  上面代码单独存为一个文件 find 不会报错,但是加到一个批处理中 就会找不到 find  提示:
"find" 不是内部命令或外命令,也不是可以......


这个问题困扰了我很久了,在没有办法的情况下 我只能把find.exe findstr.exe  等外部命令都复制到批处理目录下..........
作者: CUer    时间: 2011-8-22 20:35

回复 4# lovealei


那个批处理代码中是不是修改过path变量?
作者: lovealei    时间: 2011-8-25 09:07

本帖最后由 lovealei 于 2011-8-25 09:10 编辑

想起来了,的确设置了一个PATH变量,原来不能设置这个变量啊
作者: lovealei    时间: 2011-8-25 09:22

本帖最后由 lovealei 于 2011-8-25 09:27 编辑

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

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

除了上面的路径,xp 2003 系统变量path 默认的路径还有那些?
作者: brqtpt007    时间: 2011-8-25 16:30

这个是用来做路由表的吗
作者: lovealei    时间: 2011-8-26 12:05

回复 8# brqtpt007


    不是,只是为了得到外网IP




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2