Board logo

标题: [系统相关] 【已解决】批处理如何判断内网还是外网? [打印本页]

作者: dnvplj    时间: 2014-9-6 16:30     标题: 【已解决】批处理如何判断内网还是外网?

本帖最后由 dnvplj 于 2014-10-18 11:56 编辑

请问各位朋友:如何“判断内网还是外网”,如果是外网就自动调用“C:\SOFT\GUANJI.EXE"程序,关闭计算机。
作者: 522235677    时间: 2014-9-6 20:03

判断什么?
作者: dnvplj    时间: 2014-9-6 22:30

判断“计算机”,连的是互联网还是本公司的局域网。
作者: yu2n    时间: 2014-9-6 23:01

  1. REM 0.BAT
  2. @echo off
  3. ping -n 2 -w 200 223.6.6.6 >nul 2>nul && start "" "C:\SOFT\GUANJI.EXE"
  4. goto :eof
复制代码

作者: dnvplj    时间: 2014-9-7 12:29

4楼的朋友您好,能有个提示吗?如外网提示为:“你正在使用外网”,内网提示为:“你正在使用外网”,没有连接网络提示为:你的计算机没有连接任何网络
作者: yu2n    时间: 2014-9-7 22:56

回复 5# dnvplj
  1. REM 0.BAT
  2. @echo off
  3. REM 设置外网主机地址(wwwhost)、局域网主机地址(geteway)
  4. set wwwhost=223.6.6.6
  5. set geteway=192.168.1.1
  6. ping -n 2 -w 200 %wwwhost% >nul 2>nul && (
  7.   echo 外网
  8. ) || (
  9.   ping -n 2 -w 50 %geteway% >nul 2>nul && (
  10.     echo 内网
  11.   ) || (
  12.     echo 没有连接网络
  13.   )
  14. )
  15. pause
  16. goto :eof
复制代码

作者: dnvplj    时间: 2014-9-8 08:57

回复 6# yu2n
首先感谢您的回复,请教两个问题:一、如果IP地址是10或172开头和192.168.6.1的地址如何判断;二、223.6.6.6是那的地址,为何要使用他。多谢了
作者: yu2n    时间: 2014-9-8 12:53

回复 7# dnvplj
你只需要给一个外网主机地址、一个局域网主机地址。
223.6.6.6 是外网主机地址,你也可以换成 www.baidu.com
192.168.1.1 是局域网网关地址,你可以自行设置成任意局域网主机地址,只要这个局域网地址在线。
作者: dnvplj    时间: 2014-9-8 13:11

回复 8# yu2n
如果在加一条“外网主机地址”和加两个“内网网关地址”,这样写对吗?
  1. REM 0.BAT
  2. @echo off
  3. REM 设置外网主机地址(wwwhost)、局域网主机地址(geteway)
  4. set wwwhost=223.6.6.6
  5. set wwwhost=www.sina.com
  6. set geteway=192.168.1.1
  7. set geteway=10.60.123.1
  8. set geteway=172.16.0.1
  9. ping -n 2 -w 200 %wwwhost% >nul 2>nul && (
  10.   echo 外网
  11. ) || (
  12.   ping -n 2 -w 50 %geteway% >nul 2>nul && (
  13.     echo 内网
  14.   ) || (
  15.     echo 没有连接网络
  16.   )
  17. )
  18. pause
  19. goto :eof
复制代码

作者: yu2n    时间: 2014-9-8 13:22

回复 9# dnvplj
这样设置变量达不到你要的效果。
同一个变量,多次赋值,只会保留最后的值。
如果只需要判断内网网,我之前的脚本就可以了。
如果要判断几个IP地址是否能够连通,那就不该这么写。
作者: dnvplj    时间: 2014-9-8 13:40

公司是一个大网,分公司是小局域网,网关都不一样,能否帮我按九楼的要求改一下吗?
作者: dnvplj    时间: 2014-9-8 13:41

回复 10# yu2n
公司是一个大网,分公司是小局域网,网关都不一样,我想用一下文件判断多个网关,能否帮我按九楼的要求改一下吗?
作者: yu2n    时间: 2014-9-8 14:36

回复 12# dnvplj
你可以针对每一个IP地址写通、不通的情况下,执行的命令。
  1. REM 0.BAT
  2. @echo off
  3. set host=223.6.6.6
  4. ping -n 2 -w 200 %host% >nul 2>nul
  5. if %ERRORLEVEL%==0 (
  6.   echo, %host% 通
  7. ) else (
  8.   echo, %host% 不通
  9. )
  10. set host=www.sina.com
  11. ping -n 2 -w 200 %host% >nul 2>nul
  12. if %ERRORLEVEL%==0 (
  13.   echo, %host% 通
  14. ) else (
  15.   echo, %host% 不通
  16. )
  17. set host=192.168.1.1
  18. ping -n 2 -w 200 %host% >nul 2>nul
  19. if %ERRORLEVEL%==0 (
  20.   echo, %host% 通
  21. ) else (
  22.   echo, %host% 不通
  23. )
  24. set host=10.60.123.1
  25. ping -n 2 -w 200 %host% >nul 2>nul
  26. if %ERRORLEVEL%==0 (
  27.   echo, %host% 通
  28. ) else (
  29.   echo, %host% 不通
  30. )
  31. set host=172.16.0.1
  32. ping -n 2 -w 200 %host% >nul 2>nul
  33. if %ERRORLEVEL%==0 (
  34.   echo, %host% 通
  35. ) else (
  36.   echo, %host% 不通
  37. )
  38. pause
复制代码

作者: dnvplj    时间: 2014-9-8 15:18

回复 13# yu2n
如果通就调用:C:\SOFT\GUANJI.EXE文件,写到那个位置
作者: yu2n    时间: 2014-9-8 16:14

回复 14# dnvplj

写在每行的echo, %host% 通的下面,如下所示:
  1. set host=172.16.0.1
  2. ping -n 2 -w 200 %host% >nul 2>nul
  3. if %ERRORLEVEL%==0 (
  4.   echo, %host% 通
  5.   start "" "C:\SOFT\GUANJI.EXE"
  6. ) else (
  7.   echo, %host% 不通
  8. )
复制代码

作者: hnldwhm52    时间: 2014-9-11 23:22

haodieyixuexi!!
作者: dnvplj    时间: 2014-10-18 11:55     标题: RE: 批处理如何判断内网还是外网?

本帖最后由 dnvplj 于 2014-10-18 11:57 编辑

感谢yu2n,问题已解决。




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