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

[系统相关] [已解决]获取外网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处于关闭状态
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

说明 %ip% 为空,当 echo 命令没有任何参数时将显示回显状态“ECHO处于关闭状态”或者“ECHO处于打开状态”之类的

TOP

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

终于发现问题所在了. 原来是用FIND和FINDSTR 的不同结果

TOP

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


这个问题困扰了我很久了,在没有办法的情况下 我只能把find.exe findstr.exe  等外部命令都复制到批处理目录下..........

TOP

回复 4# lovealei


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

评分人数

TOP

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

想起来了,的确设置了一个PATH变量,原来不能设置这个变量啊

TOP

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

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

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

除了上面的路径,xp 2003 系统变量path 默认的路径还有那些?

TOP

这个是用来做路由表的吗

TOP

回复 8# brqtpt007


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

TOP

返回列表